Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengulangi Ahli Struct dalam C Menggunakan Boost Fusion dan Phoenix?

Bagaimana untuk Mengulangi Ahli Struct dalam C Menggunakan Boost Fusion dan Phoenix?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 16:30:02616semak imbas

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

Merelakan Ahli Struct dalam C

Memberi definisi struct:

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

kita boleh mengulanginya ahli dan mencetak nilai mereka menggunakan teknik seperti Boost Fusion/Phoenix.

Menggunakan Boost Fusion, kita boleh menyesuaikan struct untuk gabungan:

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

Dan kemudian ulangi ahlinya menggunakan 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>

Contoh penggunaan:

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

Ini akan mengeluarkan nilai ahli:

1
42
The Answer To LtUaE

Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Ahli Struct dalam C Menggunakan Boost Fusion dan Phoenix?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn