如果我上课:
Class aClass
{
vector<aClass> connections;
}
如果我要做的话,其他一切都正确声明:
aClass a = new aClass();
aClass b = new aClass();
b.connections.push_back(a);
这会创建对
a
的引用还是会复制该类。我希望它是指向该类的指针,但是我不确定是否需要额外的语法来确保这一点。我记得读过,当一个类声明为
aClass a = new aClass
时,它正在创建一个指向堆中对象的指针,但是我不确定这里会发生什么。供参考,例如链接列表。
另外,如果有人可以为这个问题想一个更好的标题,请继续进行编辑。
最佳答案
connections
应该是vector<aClass*>
,aClass a
应该是aClass* a
。
然后,对于b.connections.push_back(a);
,将复制指针的值,而不是指针对象(即,指向的对象)。
如果您确实想使用诸如std::vector<std::shared_ptr<aClass>>
之类的指针,我建议您使用smart pointers而不是原始指针。