m_Equipment = new QVector<cEquipmentItem*>; m_Equipment[index] = nullptr;为什么第二行代码报错
时间: 2024-03-05 09:47:47 浏览: 50
QT,QVector 基本用法,遍历[实例讲解] - 小皮球的博客 - CSDN博客1
第二行代码报错是因为你没有先为 QVector 分配内存空间,即没有使用 `resize()`者 `reserve()` 方法来指定 QVector 的大小。因此,当你尝试在 `m_Equipment[index]` 中插入一个空指针时,程序会出现未定义行为,从而导致错误。
你可以尝试使用以下代码来分配内存空间:
```c++
m_Equipment = new QVector<cEquipmentItem*>;
m_Equipment->resize(size); // 或者使用 m_Equipment->reserve(size);
(*m_Equipment)[index] = nullptr;
```
其中,`size` 是你想要为 QVector 分配的大小,`resize()` 方法会在分配内存空间的同时将 QVector 的大小设置为 `size`,`reserve()` 方法则只会分配内存空间而不改变 QVector 的大小。注意,使用 `new` 操作符来创建 QVector 对象是不必要的,你可以直接在类的构造函数中初始化 QVector,例如:
```c++
cEquipment::cEquipment()
{
m_Equipment.resize(10); // 初始化大小为 10 的 QVector
m_Equipment[0] = nullptr;
// ...
}
```
这样可以避免手动管理内存的麻烦。
阅读全文