【发布时间】:2015-09-21 00:20:47
【问题描述】:
我遇到了与here 相同的错误。有关长错误消息,请参阅底部的“编译信息”。基本上,如果我 #include
In file included from /usr/include/boost/spirit/home/qi/nonterminal/rule.hpp:35:0,
from /usr/include/boost/spirit/home/qi/nonterminal.hpp:14,
from /usr/include/boost/spirit/home/qi.hpp:20,
from /usr/include/boost/spirit/include/qi.hpp:16,
from prog.cpp:9:
/usr/include/boost/spirit/home/qi/reference.hpp: In instantiation of 'bool boost::spirit::qi::reference<Subject>::parse(Iterator&, const Iterator&, Context&, const Skipper&, Attribute&) const [with Iterator = __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >; Context = boost::spirit::context<boost::fusion::cons<std::basic_string<char>&, boost::fusion::nil_>, boost::spirit::locals<> >; Skipper = boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >; Attribute = std::basic_string<char>; Subject = const boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, std::basic_string<char>(), boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal, boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space, boost::spirit::char_encoding::ascii> >, 0l>, boost::spirit::unused_type, boost::spirit::unused_type>]':
我的代码实际上和上面的例子有点不同:
My::Dictionary Parser::parse( const char * s ) {
std::string input(s); // input to parse
qi_my_protocol grammar; // create instance of parser
My::Dictionary msg; // map to receive results
bool result = qi::phrase_parse(
input.begin(),
input.end(),
grammar,
qi::space,
msg
); // returns true if successful
return msg;
}
【问题讨论】:
-
请给出一个正确的问题标题(包括标题没有任何问题,您可以轻松检查)。包含相关代码。
-
第 9 行的 prog.cpp 中的#include 很明显失败了。
-
当然不是。评论
phrase_parse电话。或者,也许,阅读我的答案。 -
好的,我明白你的意思了。谢谢你帮助我。我的代码实际上与我在 ideone 上找到的示例有点不同。如果我注释掉 phrase_parse 调用它会编译,但我不知道如何修复对 phrase_parse 的调用
-
你怎么能不呢?你……没看到我的回答吗?它是 52 分钟前的。附带一个在 coliru 上运行的工作示例...
标签: c++11 boost g++ boost-spirit