2012-09-18 77 views
1

我在編程但是我仍然在學習的經驗,我決定創建一個QVector陣列來存儲一些QGraphicsRectItem在這樣的:QVector陣列中的QT無法訪問私有成員錯誤

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 <>,我只是不知道如何聲明它。

謝謝你的幫助! :)

回答

2

你的聲明很好,問題似乎是QGraphicsRectItem的默認構造函數是私有的,所以你不能使用需要默認構造函數的QVector方法,比如QVector :: resize。查看QGraphicsRectItem的文檔,似乎沒有公共複製構造函數或複製賦值運算符,因此QGraphicsRectItem不適合作爲QVector的元素類型。你必須存儲指向QGraphicsRectItem:

QVector<QGraphicsRectItem*> FreeLayer1; 
FreeLayers1.resize(10); 
FreeLayers1[0] = new QGraphicsRectItem(/* ... */); 
+0

謝謝你,它正是我想要的! :d – user1236892

相關問題