C++编程常见问题—error: passing 'const std::map]' discards qualifiers或pass-by-reference-to-const-map导致的“d
生活随笔
收集整理的這篇文章主要介紹了
C++编程常见问题—error: passing 'const std::map]' discards qualifiers或pass-by-reference-to-const-map导致的“d
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
產生問題的場景:
int func(const map<int, string> &aMap) { string value = amap[0]; }或者
int? Test::func()const
{
?????? string value = amap[0];???????????????? //amap是Test類的成員函數.
}
用g++編譯上面的代碼,會報……discards qualifiers。
?????? 這里是原因。
?????? 簡單來說,map的[]運算符會在索引項不存在的時候自動創建一個對象,有可能會改變map本身,所以不能夠用在一個const map上。
解決辦法有兩個:
????????????????? 方法1、不要將形參聲明為const
??????????????????方法2、用find代替[]
??????????????????????? 不過第二中方法存在風險,因為end()->second是合法的,于是就會產生傳說中的null引用。
總結
以上是生活随笔為你收集整理的C++编程常见问题—error: passing 'const std::map]' discards qualifiers或pass-by-reference-to-const-map导致的“d的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libxml2如何解析xml格式的字符串
- 下一篇: 使用 gperf 实现高效的 C/C++