我有编程经验,但我仍然在学习,我决定创建一个QVector数组,像这样在其中存储一些QGraphicsRectItem:QVector<QGraphicsRectItem> *FreeLayer1;FreeLayer1 = new QVector<QGraphicsRectItem>;FreeLayer1->resize(10);这是错误:c:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtCore/qvector.h(532) : error C2248: 'QGraphicsRectItem::QGraphicsRectItem' : cannot access private member declared in class 'QGraphicsRectItem'c:\qtsdk\desktop\qt\4.8.1\msvc2010\include\qtgui\qgraphicsitem.h(728) : see declration of 'QGraphicsRectItem::QGraphicsRectItem'c:\qtsdk\desktop\qt\4.8.1\msvc2010\include\qtgui\qgraphicsitem.h(683) : see declaration of 'QGraphicsRectItem'c:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtCore/qvector.h(473) : while compiling class template member function 'void QVector<T>::realloc(int,int)'我知道这听起来确实很愚蠢或很容易做到,但是我没有发现与我完全相同的错误,而且我对声明没有太多的经验。我的问题是如何编写此代码才能使用变量FreeLayer1。我坚持使用QVector ,我只是不知道如何声明它。感谢您的帮助! :) (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您的声明很好,问题似乎在于QGraphicsRectItem的默认构造函数是private,因此您不能使用需要默认构造函数的QVector方法,例如QVector::resize。查看QGraphicsRectItem的文档,似乎也没有公共(public)副本构造函数或副本赋值运算符,因此QGraphicsRectItem不符合QVector的元素类型。您必须存储指向QGraphicsRectItem的指针:QVector<QGraphicsRectItem*> FreeLayer1;FreeLayers1.resize(10);FreeLayers1[0] = new QGraphicsRectItem(/* ... */); (adsbygoogle = window.adsbygoogle || []).push({});
07-28 01:32