【发布时间】:2012-02-08 21:25:41
【问题描述】:
我想创建一个聚合并用向量存储对象,我写的正确吗? :
Class A
{
private:
vector <B *> pB;
public:
A();
A(int tag);
~A();
}
A::A(int tag){
for (i=0; i != tag, i++)
pB.push_back(new B());
}
要创建不是聚合而是组合,我只需在析构函数中添加它:
A::~A(){
vector <B *>::iterator citer = pB.begin();
while (citer != pB.end())
delete *(citer++);
pB.clear();
}
对吗? 谢谢
【问题讨论】:
-
为什么不直接使用
std::vector<B>? -
你还在用 pB 做什么(我怀疑没有任何用法会使这成为正确的方法,但我认为我们需要了解更多信息才能提出最佳方法)
-
您可能想要查看
shared_ptr、unique_ptr或boostptr_containers,而不是将原始指针存储在不管理它们的容器中。 -
@KennyTM:将 A 的生命与 B 的生命分开
-
@Mark:B 与 A 是有关系的,所以我创建了一个聚合。 pB 包含一个指向包含大型稀疏矩阵的对象的指针。 A 类管理这些矩阵。
标签: c++ vector composition aggregation