c++ - 错误 : request for member 'push_back' in 'myVector' , 是非类类型 'std::vector<Base>*' ?

标签 c++

Base 是我的基类,它还有派生类 derived1derived2。我想使用动态绑定(bind),制作一个 Base 指针 vector ,它可以 push_back() 任何 Base, derived1derived2 对象。但是,它告诉我 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/

相关文章:

c++ - 使用 fstream 将完整文件读取为字符串的最佳方式?

c++ - 如何覆盖 C++ STL 中分配器类中构造方法的默认行为

c++ - 质数保理,无 IO

c++ - 如何打印中间包含 0 字符的字符串?

c++ - 特化模板<typename T, template<typename> class U>

javascript - 如何在 Cheerp(C++ 到 JavaScript 转换器)中保留变量名称

c++ - Qt ui 文件不编译成 C++ 头文件

c++ - 我如何改进这个 Pollard 的 rho 算法来处理半大素数的乘积?

c++ - 运算符重载和堆与堆栈的混淆

c++ - '初始化' : truncation from 'int' to 'char'