class A {vector<A>} C++ 迭代
这个代码在C++中是不能编译的,因为它会导致无限的嵌套,因为std::vector<A>
会持有A类型的实例,而A类型的实例又会包含一个std::vector<A>
,这会无限制地复制和嵌套下去。
如果你想要创建一个类,其中包含一个指向自身类型的vector,你可以使用以下两种方法之一:
-
使用指针或引用来避免无限嵌套。
class A {
public:
std::vector<std::shared_ptr<A>> vec;
};
或者
class A {
public:
std::vector<A*> vec;
};
-
如果你想要一个值类型的vector,你可以改变设计,让类A包含指向另一个类B的指针,其中B包含vector<A>。
class B {
public:
std::vector<A> vec;
};
class A {
public:
std::shared_ptr<B> ptr;
};
这样,A类型的实例就只会包含一个指向B类型实例的指针,B类型的实例包含一个std::vector<A>,这样就避免了无限嵌套。
提示:AI自动生成,仅供参考