簡體   English   中英

需要左值作為賦值錯誤的左操作數

[英]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 BrokenParti指向的對象將存儲在該內存中,則可以使用placement new運算符: new (&(*i)) BrokenPart();

看看這個問題: “新放置”有什么用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM