C++ C++;向量存储基类指针
好,情况: 我正在使用一个我无法控制的库,它有一个createSomeObject()方法。 这个方法返回一个指向带有纯虚函数的抽象基类的指针,并且它没有复制构造函数,所以我不能自己实例化它,也不能复制它(显然) 我需要在一个向量中存储其中的一些数字(比如10),因此我尝试执行以下操作:C++ C++;向量存储基类指针,c++,pointers,stl,vector,C++,Pointers,Stl,Vector,好,情况: 我正在使用一个我无法控制的库,它有一个createSomeObject()方法。 这个方法返回一个指向带有纯虚函数的抽象基类的指针,并且它没有复制构造函数,所以我不能自己实例化它,也不能复制它(显然) 我需要在一个向量中存储其中的一些数字(比如10),因此我尝试执行以下操作: vector<AbstractBaseClass*> v(10); for(int i = 0; i < 10; i++) { v.push_back(library->cre
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);
}
向量v(10);
对于(int i=0;i<10;i++)
{
v、 向后推(库->createSomeObject());
}
循环一结束,向量中就充满了断开的指针
我尝试了以下方法:
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);
}
向量v(10);
对于(int i=0;i<10;i++)
{
AbstractBaseClass*abc=library->createSomeObject();
v、 推回(abc);
}
无济于事。我一定是疯了,或者是做错了什么。我环顾四周,但答案总是使用boost::shared\u ptr。这可能是一个很好的解决方案,但我不能保证它会出现在构建它的机器上,所以我希望避免使用代码打包Boost
有什么我遗漏的吗?我觉得我好像忘记了一些简单的事情,因为我想不出其中一个不起作用的原因。当你这样做时:
vector<AbstractBaseClass*> v(10);
或者,在创建一个空向量后,另一种方法是调用
reserve
。噢,该死,我害怕这个:我是弱智。将在计时器关闭时接受。>10个(悬空)指针。。。你为什么叫他们吊儿郎当?这是10个空指针。@KirillKobelev我认为它们没有初始化为空。是吗?@KirillKobelev:)MSV往往很怪异。我并不是说它们不是,但一个标准引用可以作为证据,而不是一个编译器的行为