在C++中迭代结构

Eya*_*l D 4 c++ iteration struct

我在迭代结构时遇到了一些麻烦.

可以根据编译器标志以不同方式定义结构.我想将所有结构成员设置为0.我不知道有多少成员,但它们都保证是数字(int,long ...)

请参阅以下示例:

#ifdef FLAG1
    struct str{
        int i1;
        long l1;
        doulbe d1;
    };
#elsif defined (OPTION2)
    struct str{
        double d1
        long l1;
    };
#else
    struct str{
        int i1;
    };
#endif
Run Code Online (Sandbox Code Playgroud)

我想我想做的一个很好的伪代码是:

void f (str * toZero)
{
    foreach member m in toZero
        m=0
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在c ++中轻松实现?

Dai*_*Dai 7

在C++使用中将任何PODO数据初始化为零= { 0 }.您不需要遍历每个成员.

StructFoo* instance = ...
*instance = { 0 };
Run Code Online (Sandbox Code Playgroud)