我有一个非常简单的问题,我似乎无法弄清楚。我不会费心发布完整的代码,因为我很确定你不需要看到它就知道问题所在。
假设我想解析一个看起来像这样的文件:
"dp",1,1
"dp",2,2
您希望每条数据线都是一个结构并将它们放入一个向量中。
namespace node {
struct dp { int a; int b; };
std::vector<dp> data;
}
我将它们添加到 Fusion。
BOOST_FUSION_ADAPT_STRUCT(obj::dp,(int,a)(int,b))
BOOST_FUSION_ADAPT_STRUCT(node::data,(std::vector<node::dp>,data))
我的解析语法如下所示:
_dp %= lit("\"dp\",") >> int >> ',' >> int;
_d %= *_dp;
我的规则是:
// in node namespace
qi::rule<Iterator,data(),Skipper> _d;
qi::rule<Iterator,dp(),Skipper> _dp;
问题是……
_d %= *_dp;
不编译,但如果我在它前面放任何东西,它就会编译。
_d %= 'a' >> *_dp;
粗略地说,这不会解析,因为输入数据没有“a”,但你明白了。
你会如何处理这样的事情?