2014-02-28 57 views
0

出錯無效初始化結構:錯誤:在C++

invalid initialization of reference of type Assoc<float, std::basic_string<char> >& from expression of type const Assoc<float, std::basic_string<char> >

此代碼

Assoc<keyType,valueType>& found = internalStorage.get(find(key));//returns the value of some key 

對不起你們,我知道這是不是有趣,但我困惑。

任何想法是什麼問題?

回答

1

它看起來像internalStorage.get()按值返回對象,而您試圖將非const引用綁定到返回的臨時對象。

解決這個問題的最佳方式取決於它究竟你正在試圖做的(和上internalStorage類型):

  • 如果您不需要修改found,使基準const(並參見Does a const reference prolong the life of a temporary?)。
  • 如果確實需要修改found(這是什麼存儲在internalStorage複印件)時,只要將&
  • 如果需要修改存儲在internalStorage對象,你可能需要重構的代碼。
+0

的確。使引用常量,它應該工作。不幸的是,Visual C++ *不允許此代碼:) – heinrichj