gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:23:57 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com