我的代码无法编译,我不知道为什么

时间:2013-11-25 21:15:10

标签: c++ map stl return-value

我有一些代码行,我得到了错误,但我不知道为什么。

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'参数丢弃限定符。)

2 个答案:

答案 0 :(得分:2)

您无法在const地图上调用operator[]

改为使用mapvariable.at(indexer).at(another_indexer)

答案 1 :(得分:0)

我认为这是因为operator[]上的std::map不是const操作。您可能需要使用find()方法或C ++ 11 at()方法。