私はブーストフュージョンのものを使って通常のc構造体をファイルに書き出しようとしています。 XMLファイルは、データをキャプチャして他のツールと互換性を持たせるか、手で編集することができます。私はほとんどそれを持っているようだが、基本的な何かが欠落しているようだ。 私は、boost:fusionのクイックスタートページにあるものとかなり似たものを使用しています:http://www.boost.org/doc/libs/1_54_0/libs/fusion/doc/html/fusion/quick_start.html。私はここでは徹底的に見てきましたが、ブーストのドキュメンテーションでは、誰もフィールド名にアクセスしていないようです。ブーストフュージョンマップのフィールド名にアクセスする
私は次のようにそれを使用したいstruct print_xml
{
template <typename T>
void operator()(T const& x) const
{
std::cout
<< '<' << x.first << '>'
<< x
<< "</" << x.first << '>'
;
}
};
:
namespace fields{
struct val1;
struct val2;
struct letter;
struct number;
}
typedef fusion::map<
fusion::pair<fields::val1, double>,
fusion::pair<fields::val2, double>,
fusion::pair<fields::letter, char>,
fusion::pair<fields::number, int> > myStructType;
私は最初何のメンバーがありません知っている次のように私は、構造体を定義したが、それでも運
BOOST_FUSION_ADAPT_STRUCT(
myStructType,
(double, val1)
(double, val2)
(char, letter)
(int, number)
)
myStructType saveMe = { 3.4, 5.6, 'g', 9};
for_each(saveMe, print_xml());
その他の回しかし、実際にフィールド名にアクセスする必要があるようです!私が持っているコードはx.secondでうまく動作しますが、フィールド名を得るために必要なものを達成できません。 これ以外にどのようにすればいいですか? ありがとう!
驚異のピース:/これは存在しなかった – sehe