【发布时间】:2013-05-14 13:57:17
【问题描述】:
我正在尝试编写一个解析器(作为第一步,当然它会被扩展很多)解析一个双精度并通过将该双精度传递给我的类的工厂方法来创建我的类 ExpressionTree 的一个对象。 这是我的第一次尝试
struct operands : qi::grammar<string::iterator, ExpressionTree()>
{
operands() : operands::base_type(start)
{
start = qi::double_[qi::_val = ExpressionTree::number(qi::_1)];
}
qi::rule<string::iterator, ExpressionTree()> start;
};
这不会编译 (can't convert from boost::spirit::_1_type to double),因为(如果我理解正确的话)qi::_1 不是双精度数,但只能计算为双精度数。
我尝试以任何方式使用boost::bind(&ExpressionTree::number, _1),但我不知道如何获得分配给属性_val的结果
如果有人能指出我正确的方向,我将不胜感激。
【问题讨论】:
标签: c++ boost-spirit