获取工会成员的数量 有没有一种方法可以得到C++中的成员数?例如: union U { int a; double b; char c; }; int main() { std::cout << std::un

获取工会成员的数量 有没有一种方法可以得到C++中的成员数?例如: union U { int a; double b; char c; }; int main() { std::cout << std::un,c++,C++,获取工会成员的数量 有没有一种方法可以得到C++中的成员数?例如: union U { int a; double b; char c; }; int main() { std::cout << std::union_members_count<U>::value << std::endl; // prints 3 } union U { INTA; 双b; 字符c; }; int main() { STD::CUT< P

获取工会成员的数量

有没有一种方法可以得到C++中的成员数?例如:

union U
{
    int a;
    double b;
    char c;
};

int main()
{
    std::cout << std::union_members_count<U>::value << std::endl;  // prints 3
}
union U
{
INTA;
双b;
字符c;
};
int main()
{

STD::CUT< P>不,这在C++中是不可能的。

C++没有反射,它是代码本身的一个特征。

C++中没有这样的功能。你必须等待并希望能反映出一些建议。来自每个消息唯一的联合。因此,消息的最大字段数取决于与该消息关联的联合的成员数。不幸的是,该消息的编码器基于一个固定数组,其大小是一个模板参数。因此,我必须手动提供联合的成员数作为模板每个消息的编码器的参数。如果联合中的成员数量发生变化,则我必须更改编码器的模板参数的值。如果编码器数组的大小可以根据联合的成员数量自动推断,这将非常方便,因为协议有许多消息类型。encod呃,不幸的是,它已经存在了大约10多年了,而且没有单元测试,所以,把编码器改成使用动态阵列是危险的。