2011-02-08 118 views
0

我正在創建一個名爲ControlIcon的自定義類的QList。我創建ControlIcons,並使用成員變量加載它們,然後將它們添加到列表中。這裏的追加代碼:添加到QList的對象失去了所有的成員數據

this->cueList.append(firstOne);

這裏的QList作的聲明:

QList< ControlIcon *> cueList;

如果我追加後右路突破,我可以看到剛剛添加的ControlIcon滿的成員,並顯得很好。我查看列表,並且已添加的ControlIcon(並附加ControlIcon)根本沒有成員。我之前製作了一個自定義對象的QList,所以我非常困惑。有人可以幫忙嗎?

+1

請顯示firstOne創建和銷燬的代碼。 – 2011-02-08 15:54:05

+0

因此,由於某些原因,您有兩個不同的指針(firstOne和QList中存儲的指針)? firstOne仍在工作,那麼列表中的項目指向不同的地址? – 2011-02-08 20:24:17

+0

你如何「查看」清單?如果您正在使用Creator進行調試,則可能在將容器中的類成員顯示時出現問題。我有時會用Mac版的Creator遇到這個問題。 – 2011-02-09 00:55:15

回答

0

我改變了列表的數據類型爲SerialController(ControlIcon的孩子),這正是我試圖添加到它,並且它工作正常。這真的很煩人,因爲還有其他類型的控制器,但我猜它現在必須工作。

0

您的自定義類必須是assignable,這意味着它必須提供默認構造函數,複製構造函數和賦值運算符。如果他們不這樣做,可能會發生這樣的奇怪事情。

0

cueList包含指向ControlIcon對象的指針,但它不負責創建或保留這些對象。你是如何得到指針firstOne?如果它指向堆棧中的某個東西,那麼當您稍後嘗試使用它時,該對象將會失效。如果它是使用new創建的,則它將保持有效,直到使用delete進行清理。