2012-05-09 16 views
2

this pageにある従業員のサンプルコードをコンパイルできます。大きな構造がboost-spiritを使用して解析されます

私はそうのように8つの以上の文字列で構造を拡張する場合:

struct employee 
{ 
    int age; 
    std::string surname; 
    std::string forename; 
    std::string a1; 
    std::string a2; 
    std::string a3; 
    std::string a4; 
    std::string a5; 
    std::string a6; 
    std::string a7; 
    std::string a8; 
    double salary; 
}; 

(そしてもちろん私もBOOST_FUSION_ADAPT_STRUCTや文法を拡張)私がコンパイルしようとすると、その後、私は、次のエラーを取得します:

../include/boost/fusion/container/vector/convert.hpp:26:13: error: invalid use of incomplete type ‘struct boost::fusion::detail::as_vector<12>’ 
../include/boost/fusion/container/vector/detail/as_vector.hpp:26:12: error: declaration of ‘struct boost::fusion::detail::as_vector<12>’ 

私の構造体に> 10個のアイテムがある場合、これが発生することがわかりました。 2つの質問:

  1. なぜこの制限がありますか?
  2. どうすれば回避できますか?

任意の入力を歓迎します。

+2

FUSION_MAX_VECTOR_SIZEを任意の値に設定します(ただし、コンパイル時に重くなる可能性があるため制限はあります)。 – Ylisar

+0

ところで、boost 1.48とg ++ 4.6.3を使用します。コンパイルコマンド:g ++ -I ../include -ggdb -Wall -oemployee employee.cpp – jkp

+1

@Ylisar:それだけです!どうもありがとう。あなたはあなたのコメントを答えに変換できますか?私はそれを受け入れることができますか? – jkp

答えて

6

任意のキャップにFUSION_MAX_VECTOR_SIZEを定義してください。デフォルトの定義はboost/fusion/container/vector/limits.hppです。 boost/fusion/container/vector.hppは、キャップに応じて前処理された供給源を条件付きで含む。

関連する問題