我有一些代码行,我得到了错误,但我不知道为什么。
T2 at(T1 p1, T1 p2) const
{
return my_map[p1][p2];
}
T2 operator() (T1 p1, T1 p2) const
{
return my_map[p1][p2];
}
并且代码位于main:
if ( max * max == relation.size() &&
1462 == distances.at( "City1", "City2" ) &&
1826 == cdist.at( "City3", "City1" ) )
{
XY = cdist.size() -
cdist.at( "City1", "City2" ) +
distances( "City3", "City2" );
}
(其中cdist是与距离相同的对象,但是是const。)
错误可能很简单,但我对此感到非常厌倦。 (错误:传递'..'作为'..'的'this'参数丢弃限定符。)
答案 0 :(得分:2)
您无法在const地图上调用operator[]
。
改为使用mapvariable.at(indexer).at(another_indexer)
。
答案 1 :(得分:0)
我认为这是因为operator[]
上的std::map
不是const操作。您可能需要使用find()
方法或C ++ 11 at()
方法。