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++不幸地允许这个代码: