C での構造体のメンバーの反復
構造体の定義が与えられると、
<code class="c++">typedef struct A { int a; int b; char * c; } aA;</code>
その構造体を反復できます。
Boost Fusion を使用すると、構造体を融合用に適応させることができます。
<code class="c++">#include <boost/fusion/adapted/struct.hpp> BOOST_FUSION_ADAPT_STRUCT(A, (int, a)(int, b)(std::string, c));</code>
その後、Boost Phoenix を使用してそのメンバーを反復処理します。
<code class="c++">#include <boost/phoenix/phoenix.hpp> using boost::phoenix::arg_names::arg1; void print_struct_value(A const& obj) { boost::fusion::for_each(obj, std::cout << arg1 << "\n"); }</code>
使用例:
<code class="c++">int main() { const A obj = { 1, 42, "The Answer To LtUaE" }; print_struct_value(obj); }</code>
これによりメンバー値が出力されます:
1 42 The Answer To LtUaE
以上がBoost Fusion と Phoenix を使用して C で構造体のメンバーを反復処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。