[英]lvalue required as left operand of assignment Error
需要左值作為賦值左操作數
當我嘗試編譯這段代碼時,出現上述錯誤:
bullets
宣言:
我要去哪里錯了?
解釋錯誤消息:編譯器抱怨&(*i) = ...
沒有意義: &(*i)
是一個地址,不能更改。
有關修復程序,請參見fontanini的答案。
你不能那樣做。 項目符號包含Part
,而不包含Part*
。 您也不能修改列表中存儲的Part
對象的內存地址,可以修改其內容。
您可以使用指針列表:
std::list<Part*> bullets;
/* ... */
*i = new BrokenPart(**i);
注意迭代器上的兩個derreference運算符,一次是獲取Part
指針,然后是另一個來對它進行間接引用。
作為建議,我會告訴您更改設計。 看起來可以使用狀態模式重新設計Part
類,您應該看看它。
如果要在預分配的內存上構造new BrokenPart
, i
指向的對象將存儲在該內存中,則可以使用placement new運算符: new (&(*i)) BrokenPart();
看看這個問題: “新放置”有什么用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.