【发布时间】:2021-04-20 14:14:01
【问题描述】:
我怎样才能拥有不同对象的变体A, B, C,其中C 引用了该变体?
class A {
...
};
class B {
...
};
class C {
...
std::vector<PossibleValues> storage; // reference to variant
...
};
boost::variant<A, B, C> PossibleValues;
【问题讨论】:
-
不可能,除非你使用指针。这与类或结构不能包含自己的类型的原因相同。
-
您可以将
typedefed 的每个类前向声明到变体中。声明typedef后,定义所有类,然后使用typedef定义变体的实例。 -
@SamVarshavchik 很难理解你的意思,你能提供答案吗?
-
@Someprogrammerdude:
std::vector“是”指针之类的。struct S { std::vector<S> children; };是可能的。 -
@Jarod42 你为什么要删除你的解决方案?我刚刚测试了它,它可以工作。
标签: c++ boost-variant