Base
是我的基类,它也有派生类derived1
和derived2
。我想使用动态绑定,制作Base
指针的向量,可以push_back()
任意Base
,derived1
和derived2
个对象。但是,它告诉我push_back()函数不是正确的类型?
main()
中的代码:
vector<Base> *myVector;
myFunction(myVector);
功能:
void myFunction(vector<Base> *&myVector)
{
Base *b = new Base;
myVector.push_back(b);
delete [] b;
}
答案 0 :(得分:2)
使用Base的指针向量:
vector<Base*>
也不要使用指向矢量的指针,你可以通过引用将矢量传递给你的函数:
void myFunction(vector<Base*> &myVector)
{
Base *b = new Base;
myVector.push_back(b);
}
在delete b;
结尾处myFunction
,因为它会使您的推送指针无效。
最后,你最终想要的是使用unique_ptr
,所以:
vector<unique_ptr<Base>> myVector;
答案 1 :(得分:1)
试
vector<Base *> myVector;
你的代码
vector<Base> * myVector;
创建指向vector<Base>
类型向量的指针,这不是您想要的。你想要的是vector<Base *>
类型的向量。