C++ 赋值错误的左操作数需要左值

C++ 赋值错误的左操作数需要左值,c++,C++,赋值的左操作数需要左值 当我试图编译这段代码时,出现了上述错误: 项目符号的声明: 我哪里出错了?如果您想在预先分配的内存中构建new BrokenPart,其中存储I指向的对象,您可以使用placement new操作符:new(&(*I))BrokenPart() 检查这个问题:你不能那样做。项目符号包含部分s,而不是部分*。您也不能修改列表中存储的部分对象的内存地址,您可以修改它们的内容 您可以使用指针列表: std::list<Part*> bullets; /* ... *

赋值的左操作数需要左值

当我试图编译这段代码时,出现了上述错误:

项目符号的声明


我哪里出错了?

如果您想在预先分配的内存中构建
new BrokenPart
,其中存储
I
指向的对象,您可以使用placement new操作符:
new(&(*I))BrokenPart()


检查这个问题:

你不能那样做。项目符号包含
部分
s,而不是
部分*
。您也不能修改列表中存储的
部分
对象的内存地址,您可以修改它们的内容

您可以使用指针列表:

std::list<Part*> bullets;
/* ... */
*i = new BrokenPart(**i);
std::列出项目符号;
/* ... */
*i=新的BrokenPart(**i);
注意迭代器上的两个derreference操作符,一次用于获取
部分
指针,另一次用于derreference它


作为建议,我想告诉你改变你的设计。看起来可以使用重新设计
部分
类,您应该看看它。

为了解释错误消息:编译器抱怨
&(*i)=…
没有意义:
&(*i)
是地址,不能更改

有关修复方法,请参见丰塔尼尼的回答