7
我使用Boost :: Spirit將一些文本解析爲結構。這需要使用BOOST_FUSION_ADAPT_STRUCT解析文本並直接存儲到結構中。我知道這個宏有兩個參數:第一個參數的結構名稱和第二個參數的所有結構成員。我正在通過那些2.但是,我收到編譯錯誤說,BOOST_FUSION_ADAPT_STRUCT不採用正確數量的參數
error: macro "BOOST_FUSION_ADAPT_STRUCT_FILLER_0" passed 3 arguments, but takes just 2
這是代碼段。讓我知道你是否需要整個代碼。
謝謝。
namespace client
{
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;
struct Dir_Entry_Pair
{
std::string dir;
std::string value1;
std::pair<std::string, std::string> keyw_value2;
};
}
BOOST_FUSION_ADAPT_STRUCT(
client::Dir_Entry_Pair,
(std::string, dir)
(std::string, value1)
(std::pair< std::string, std::string >, keyw_value2))
這是我試圖解析規則,
qi::rule<Iterator, Dir_Entry_Pair()> ppair = dir
>> '/'
>> entry
>> -(keyword >> entry);
謝謝!我只是鍵入了std :: pair <..>,它的工作原理:) – Nik
@Nik:這是宏的一個常見問題 - 通常會在'map'上面提供'BOOST_FOREACH',它比Fusion/Spirit組合稍微普遍:)希望你玩得開心! –