7
私はBoost :: Spiritを使ってテキストを構造体に解析しています。これには、テキストを解析して構造体に直接格納するためにBOOST_FUSION_ADAPT_STRUCTを使用する必要があります。私はマクロが2つの引数を取ることを知っています:第1引数としての構造体名と第2引数としてのすべての構造体メンバそして、私はちょうどそれらの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);
ありがとうございます!私はちょうどtypedef'd std :: pair <..>そしてそれは働いた:) – Nik
@ニック:これは、マクロでよく見られる問題です - 通常はマップ上に 'BOOST_FOREACH'があります。これはFusion/Spiritの組み合わせよりやや一般的です:)あなたはそれらを楽しんでいることを望んでいる! –