我在暑假期间为我的朋友编写一个程序,我遇到了非常奇怪的问题。
我在自制模板类中使用 operator= 将 QVector< T > 分配给其他 QVector< T >,然后尝试检查这第二个 QVector< T > 是否有任何元素。首先,我正在检查它的大小并且它很好,但是当我使用 operator[] 和函数 GetName() 时,它是类 T 的成员。
这是一些代码:
template <template T> class Turniej {
private:
QVector<T>* list_;
QVector<Stol<T> > stoly_;
int round_;
int max_rounds_;
Turniej() {round_=1;}
public:
static Turniej& GetTurniej() {
static Turniej turniej;
return turniej; }
void SetList(QVector<T> *list) {list_=list; }
QVector<T>& GetList() {return *list_;}
//Some other irrelevant methods
};
然后我参考填充了 Gracz 类的 2 个对象的 QVector 调用 SetList() 函数
Turniej<Gracz>::GetTurniej().SetList(&list)
当我最终试图通过下面的代码访问 Turniej 类中的 list_ 对象时,我收到了这个错误: QVector::operator[] 中的 ASSERT failure: "index out of range", file .../QtCore/qvector .h,第 356 行
qDebug()<<Turniej<Gracz>::GetTurniej().GetList()[0].GetName();
其中 GetName() 返回一些 QString 并且肯定该方法存在于 Gracz 类中。
我真的很感激任何帮助,因为我坚持了 2 天,完全不知道发生了什么。奇怪的是,我试图用谷歌搜索该错误,但在 qvector.h 的特定行中没有找到任何有错误的主题。我将 Qt 5.0.2 与 Qt Creator 一起使用
谢谢你的帮助!