【发布时间】:2020-12-08 04:15:43
【问题描述】:
有没有办法在编译时计算结构中的成员数(下例中的整数)并在同一个结构中定义一个相同大小的数组?使用 MACRO 或模板化结构而不是 int 类型就可以了。
struct A
{
int myInts[numInts()]; // here numInts() == 2
int a;
char b;
char c;
int d;
char e;
};
我觉得一些 constexpr hack 可能是可行的,但还没有找到解决方案。我需要的是创建一个数组,我可以在其中压缩所有成员的副本,并且该数组需要在编译时静态分配。成员的数量因结构而异,但数组应自动增长,以便为所有感兴趣的成员提供空间。更糟糕的是,数组需要在其他成员之前定义。
====== 编辑
似乎没有一个解决方案可以在不使整体结构设计过于复杂的情况下完成上述操作。相反,我需要手动指定数组大小。
【问题讨论】:
-
您可以在使用各种“使用结构化绑定的结构到元组”技巧定义结构后执行此操作
-
为什么要一个相同大小的数组?扩展您想要这个的原因,也许我们可以提供替代方案。
-
我需要一个紧凑的存储空间来存储结构中所有整数的副本(以及任何子结构成员中的任何整数),因为它们都作为连续的内存块从和复制到立刻。不能一起定义所有整数的原因是某些整数作为其他结构成员的子成员(即 struct substruct{ char a; int b;}; 因此它们在内存中交错。结构可以有很多非 int 成员。
标签: c++ arrays struct counter compile-time