我有一个包含类的头文件。在这一类中,我有一个函数,像这样:奇怪的const正确性错误
class Definition
{
public:
int GetID()
{
return Id;
}
//Other methods/variables
private:
int Id;
}
当我attemped得到那个ID为这样:
for (std::map<Definition, std::vector<bool> >::iterator mapit = DefUseMap.begin(); mapit != DefUseMap.end(); ++mapit, defIndex++)
{
stream << "Definition " << (*mapit).first.GetID() << " Def Use" << endl << "\t";
}
我收到以下错误
CFG.cc:1145:错误:将'const Definition'作为'int'的参数'int Definition :: GetID()'丢弃限定符
是因为我在地图内部使用定义,而且我不允许调用方法那映射def从头?有没有办法让这个ID变出来?
预先感谢
的一般规则是声明的方法'const'如果只需要' const'访问对象,即'this'可以是一个'const'指针,事情就会正常工作。还要注意'mutable'关键字,它表示可以在'const'方法中更改类成员。 “可变”成员的一个例子是,如果你想记录一个对象的最后访问时间。在这种情况下,访问时间戳将是一个“可变”成员,因此可以从“const”getter方法更新。 – 2011-04-10 03:06:18
user127817 - 如果您发现我的答案令人满意,请考虑接受它。谢谢! – QuantumMechanic 2011-04-10 17:56:21