【发布时间】:2012-08-10 03:42:22
【问题描述】:
好的,情况: 我正在使用一个我无法控制的库,它有一个方法 createSomeObject()。 此方法返回一个指向具有纯虚函数的抽象基类的指针,并且它没有复制构造函数,因此我不能自己实例化它也不能复制它(显然)。
我需要在一个向量中存储一些(比如 10 个),所以我尝试执行以下操作:
vector<AbstractBaseClass*> v(10);
for(int i = 0; i < 10; i++)
{
v.push_back(library->createSomeObject());
}
一旦这个循环结束,向量就会被损坏的指针填充。
我尝试了以下方法:
vector<AbstractBaseClass*> v(10);
for(int i = 0; i < 10; i++)
{
AbstractBaseClass* abc = library->createSomeObject();
v.push_back(abc);
}
无济于事。我一定是疯了,或者在这里做错了什么。我环顾四周,但答案总是使用 boost::shared_ptr。可能是一个很好的解决方案,但我不能保证它会在构建它的机器上,所以我想避免使用代码打包 Boost。
我有什么遗漏吗?我觉得好像我只是忘记了一些简单的事情,因为我想不出其中一个不起作用的原因。
【问题讨论】: