左值

2012-03-31 59 views
-1

需要作爲分配的左操作數左值左值

,當我嘗試編譯這段代碼我收到上述錯誤:

bullets聲明:

我哪裏錯了?

回答

2

你不能這樣做。子彈包含Part s,而不是Part*。您也無法修改存儲在列表中的Part對象的內存地址,您可以修改其內容。在迭代器

std::list<Part*> bullets; 
/* ... */ 
*i = new BrokenPart(**i); 

注意兩個derreference運營商,一旦拿到Part指針,然後另一個derreference它:

你可以使用指針列表。

作爲一個建議,我會告訴改變設計。它看起來像Part類可以重新設計使用state pattern,你應該看看它。

3

解釋錯誤信息:編譯器抱怨&(*i) = ...沒有意義:&(*i)是一個地址,無法更改。

對於修復,見fontanini的答案。