gpt4 book ai didi

c++ - 锁定的 'vector' 文件出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:00 25 4
gpt4 key购买 nike

我在“vector”类中遇到错误,例如,您在#include 时访问的类

我得到的错误主要是:

错误 1 ​​error C2259: 'Gun': 无法实例化抽象类

这个类 Gun 确实是抽象的,但我检查了代码,没有任何地方试图创建这个类的实例。有什么,是

的一些定义

vector <枪>等等;

作为将由派生类填充的类实例成员,以便我可以使用它们的多态函数。

虽然我无法访问 vector 类来更改它(即使我可以我也不想这样做)我可以看到它的代码的哪一部分发生了错误:

此 block 的第一行:

void resize(size_type _Newsize, _Ty _Val)
{ // determine new length, padding with _Val elements as needed
if (size() < _Newsize)
_Insert_n(end(), _Newsize - size(), _Val);
else if (_Newsize < size())
erase(begin() + _Newsize, end());
}

最佳答案

声明为的 vector

std::vector<Gun>

将只包含 Gun 对象。如果您尝试放置一个从 Gun 派生的实例,那么该对象将被分割成它的 Gun 部分,这是抽象的。您需要在 vector 中存储指向动态分配拷贝的指针,例如

std::vector<Gun*>

为了避免取消引用和删除逻辑,使用 boost 的指针容器:

#include <boost/ptr_container/ptr_vector.hpp>
boost::ptr_vector<Gun>

关于c++ - 锁定的 'vector' 文件出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068702/

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