Base
是我的基类,它还有派生类 derived1
和 derived2
。我想使用动态绑定(bind),制作一个 Base
指针 vector ,它可以 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;
}
最佳答案
使用指向 Base 的指针 vector :
vector<Base*>
也不要使用指向 vector 的指针,你可以通过引用将 vector 传递给你的函数:
void myFunction(vector<Base*> &myVector)
{
Base *b = new Base;
myVector.push_back(b);
}
不要在 myFunction
的末尾 delete b;
,因为这会使您的推送指针无效。
最后,您最终想要的是使用 unique_ptr
,所以:
vector<unique_ptr<Base>> myVector;
关于c++ - 错误 : request for member 'push_back' in 'myVector' , 是非类类型 'std::vector<Base>*' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26036644/