【发布时间】:2010-07-23 03:32:31
【问题描述】:
我有一个关于通过引用传递地图的问题。让我们考虑以下代码:
void doNotChangeParams(const map<int, int>& aMap){
if (aMap.find(0) != aMap.end()){
cout << "map[0] = " << aMap[0] << endl;
}
}
我有一张地图 myMap 并像这样拨打电话:doNotChangeParams(myMap)
现在,可以看出我并没有修改函数内部的参数aMap。然而,我的 g++ 编译器抱怨访问 aMap[0] 丢弃了限定符 const。
我放 const 是因为我想告诉这个函数的读者我没有修改参数。此外,当我不小心修改地图时,它有助于引发编译错误。
目前,我必须删除 const,我认为这会使读者从方法的签名中不清楚上述含义。我知道可以发表评论,但我想我会问一下,以防您知道任何“程序化”方式。
谢谢,伙计们。
【问题讨论】:
标签: c++ pass-by-reference