2013-04-04 51 views
3

我試圖僅僅返回std::map中的值,而不會改變它的值。它的工作原理,但如果我把const放在函數上,它應該是,我得到錯誤No viable overloaded operator[] for type 'const std::map。我的代碼如下:如何創建訪問std :: map項目的const成員函數

GLuint getCurrentColorAttribute() const { 
    return m_programs[m_currentActiveProgram].attributes["SourceColor"]; 
} 

這裏是我的IDE錯誤的圖像: enter image description here

回答

5

[]運營商的std::mapconst(因爲它可以創建一個在地圖上的新條目如果不存在),因此您不能從const函數調用它。

可以在C++11使用at代替:

return m_programs.at(m_currentActiveProgram).attribute["SourceColor"];

+0

漂亮,謝謝 – johnbakers 2013-04-04 02:59:01

相關問題