错误:请求'myVector'中的成员'push_back',这是非类型'std :: vector <base /> *'?

时间:2014-09-25 10:47:01

标签: c++

Base是我的基类,它也有派生类derived1derived2。我想使用动态绑定,制作Base指针的向量,可以push_back()任意Basederived1derived2个对象。但是,它告诉我push_back()函数不是正确的类型?

main()中的代码:

vector<Base> *myVector;

myFunction(myVector);

功能:

void myFunction(vector<Base> *&myVector)
{
    Base *b = new Base;

    myVector.push_back(b);

    delete [] b;
}

2 个答案:

答案 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 *>类型的向量。