QT中的QVector数组无法访问私有成员错误

QT中的QVector数组无法访问私有成员错误,qt,vector,compiler-errors,declaration,private-members,Qt,Vector,Compiler Errors,Declaration,Private Members,我有编程经验,但我还在学习,我决定创建一个QVector数组来存储一些QGraphicsRectItem,如下所示: QVector<QGraphicsRectItem> *FreeLayer1; FreeLayer1 = new QVector<QGraphicsRectItem>; FreeLayer1->resize(10); QVector*FreeLayer1; FreeLayer1=新的QVector; FreeLayer1->调整大小(10);

我有编程经验,但我还在学习,我决定创建一个QVector数组来存储一些QGraphicsRectItem,如下所示:

QVector<QGraphicsRectItem> *FreeLayer1;

FreeLayer1 = new QVector<QGraphicsRectItem>;
FreeLayer1->resize(10);
QVector*FreeLayer1;
FreeLayer1=新的QVector;
FreeLayer1->调整大小(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)'
c:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtCore/qvector.h(532):错误C2248:“QGraphicsRectItem::QGraphicsRectItem”:无法访问类“QGraphicsRectItem”中声明的私有成员
c:\qtsdk\desktop\qt\4.8.1\msvc2010\include\qtgui\QGraphicsSitem.h(728):参见“QGraphicsRectItem::QGraphicsRectItem”的定义
c:\qtsdk\desktop\qt\4.8.1\msvc2010\include\qtgui\QGraphicsSitem.h(683):参见“QGraphicsRectItem”的声明
c:\QtSDK\Desktop\Qt\4.8.1\msvc2010\include\QtCore/qvector.h(473):编译类模板成员函数“void qvector::realloc(int,int)”时
我知道这听起来很愚蠢或很容易做到,但我没有发现与我完全相同的错误,我也没有很多声明方面的经验。我的问题是如何编写此代码以使用变量FreeLayer1。我坚持使用QVector,我只是不知道如何声明它


谢谢你的帮助!:)

您的声明很好,问题似乎是QGraphicsRectItem的默认构造函数是私有的,因此您不能使用需要默认构造函数的QVector方法,如QVector::resize。查看QGraphicsRecItem的文档,似乎也没有公共复制构造函数或复制赋值运算符,因此QGraphicsRecItem不符合QVector的元素类型。您必须存储指向QGraphicsRectItem的指针:

QVector<QGraphicsRectItem*> FreeLayer1;
FreeLayers1.resize(10);
FreeLayers1[0] = new QGraphicsRectItem(/* ... */);
QVector-FreeLayer1;
自由层1。调整大小(10);
FreeLayers1[0]=新的QGraphicsRectItem(/*…*/);

谢谢你,这正是我想要的!:D