C++ 错误:C+;中的结构初始化无效+;
错误: 从类型为C++ 错误:C+;中的结构初始化无效+;,c++,struct,compiler-errors,initialization,constants,C++,Struct,Compiler Errors,Initialization,Constants,错误: 从类型为const的表达式初始化类型为Assoc&的引用无效 助理 对于此代码 Assoc<keyType,valueType>& found = internalStorage.get(find(key));//returns the value of some key Assoc&found=internalStorage.get(find(key))//返回某个键的值 对不起,我知道这不有趣,但我很困惑 知道问题出在哪里吗?它看起来像是internalSto
const的表达式初始化类型为Assoc&
的引用无效
助理
对于此代码
Assoc<keyType,valueType>& found = internalStorage.get(find(key));//returns the value of some key
Assoc&found=internalStorage.get(find(key))//返回某个键的值
对不起,我知道这不有趣,但我很困惑
知道问题出在哪里吗?它看起来像是
internalStorage.get()
按值返回对象,并且您正在尝试将非const
引用绑定到返回的临时对象
解决此问题的最佳方法取决于您正试图执行的操作(以及internalStorage
的类型):
- 如果您不需要修改
,请参考found
(请参阅)const
- 如果确实需要修改找到的
(这是存储在
),只需删除内部存储中的内容的副本
&
- 如果需要修改存储在
中的对象,则可能需要重构代码internalStorage
确实如此。使参考常数为常量,它应该工作。Visual C++不幸地允许这个代码: