对于这种情况:
我应该在
编辑: 所以,这里是我真正需要的内容的方案。 实际值仅存储在 A 数组中,所有其他对象都用于存储连接。 最简单的示例 - A = 点,B = 通过选定点的线(或曲线),C =由线描述的平面。希望这使问题更加明确。
class A
{
//implementation
};
class B
{
public:
B();
~B();
private:
std::vector<std::shared_ptr<A>> _innerArray;
};
我应该在
B()
中做什么来创建一个有效状态的对象?我需要手动为数组中的每个 A
对象调用默认构造函数吗?在 ~B()
中需要特别处理吗?如果 B 类是一个糟糕设计的例子,那么请随意提出如何改进它。谢谢。编辑: 所以,这里是我真正需要的内容的方案。 实际值仅存储在 A 数组中,所有其他对象都用于存储连接。 最简单的示例 - A = 点,B = 通过选定点的线(或曲线),C =由线描述的平面。希望这使问题更加明确。
shared_ptr
。否则,您可以保留原始指针。 - juanchopanzaB
的构造函数,并使用std::vector
迭代器版本的构造函数来初始化_innerArray
,请参见下面我的回答。如果B
不应该拥有这些对象,可以考虑使用弱指针而不是共享指针。我不认为使用裸指针有任何理由。 - JohnBweak_ptr
,它是非拥有的但可以防止B
实例具有无效的原始指针。这将是更好的方法,除非可以 保证B
实例的生命周期始终短于其包含的任何A
实例的生命周期。 - Rook