Maison >développement back-end >C++ >Comment parcourir les membres d'une structure en C à l'aide de Boost Fusion et Phoenix ?

Comment parcourir les membres d'une structure en C à l'aide de Boost Fusion et Phoenix ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 16:30:02619parcourir

How to Iterate Over a Struct's Members in C   Using Boost Fusion and Phoenix?

Itérer sur les membres d'une structure en C

Étant donné la définition d'une structure :

<code class="c++">typedef struct A
{
    int a;
    int b;
    char * c;
} aA;</code>

nous pouvons parcourir sa membres et imprimer leurs valeurs à l'aide de techniques telles que Boost Fusion/Phoenix.

En utilisant Boost Fusion, nous pouvons adapter la structure pour la fusion :

<code class="c++">#include <boost/fusion/adapted/struct.hpp>
BOOST_FUSION_ADAPT_STRUCT(A, (int, a)(int, b)(std::string, c));</code>

Et ensuite parcourir ses membres en utilisant 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>

Un exemple d'utilisation :

<code class="c++">int main()
{
    const A obj = { 1, 42, "The Answer To LtUaE" };
    print_struct_value(obj);
}</code>

Cela affichera les valeurs des membres :

1
42
The Answer To LtUaE

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn