【发布时间】:2019-05-20 10:46:02
【问题描述】:
我希望使用结构来创建一个数据类型,其中包含结构本身数组的其他引用或其他类型的结构。当引用是相同的泛型类型时,使用模板显然会导致类型本身的无限声明。我目前的解决方案是显式声明另一个结构类型和自身的结构类型。我想知道是否有更聪明的解决方案(使用结构)。
struct Transform
{
float x;
float y;
float z;
float qx;
float qy;
float qz;
float qw;
};
struct Pattern
{
enum type{ linear, rectangular, circular };
char name[20];
int id;
Transform t[PATTERN_SIZE];
};
struct Group
{
enum type{ pattern, group };
char name[20;
int id;
Group *g[20];
Pattern *p[20];
};
【问题讨论】:
-
不,这不是那个问题的重复。我在问是否可以在 struct 中拥有一个变量,既可以是类型本身,也可以是类型模式。
-
好的,你的问题措辞很奇怪。那么你正在寻找的是 std::variant (或者 boost::variant 或类似的,如果你使用的是旧编译器)。
-
你的问题措辞很糟糕。你能解释一下你想解决什么问题吗?它看起来像张贴的XY problem。
-
工会是浪费的意思?如果代码路径需要 A 它必须为 A 留出空间,因此除非您的正常路径是 B 并且 B 明显更小,否则任何包含分配操作和/或指针的多态方案可能总体上更“浪费” ",尤其是当您确实需要 A 时。
-
@GemTaylor 你可能是对的。我想这是一种早期过度优化的情况,但我对 C++ 还不太熟悉,所以我想我只是想弄清楚该语言的可能性。无论如何,感谢cmets。附言为措辞不当的问题道歉:/
标签: c++ c++11 data-structures nested