C++ 奇异常数正确性错误

C++ 奇异常数正确性错误,c++,C++,我有一个包含类的头文件。在该类中,我有这样一个函数: class Definition { public: int GetID() { return Id; } //Other methods/variables private: int Id; } 当我试图获取该ID时: for (std::map<Definition, std::vector<bool> >::iterator mapit = DefUseMap.begin()

我有一个包含类的头文件。在该类中,我有这样一个函数:

class Definition
{
public:
   int GetID()
   {
    return Id;
   }

//Other methods/variables
private:
   int Id;

}
当我试图获取该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";
}
for(std::map::iterator mapit=DefUseMap.begin();mapit!=DefUseMap.end();++mapit,defIndex++)
{
流声明
getID()
方法常量:

int getId() const
{
    return Id;
}
然后可以通过常量引用调用该方法,
操作符映射将数据存储在
std::pair
中。这样就很难意外更改密钥并破坏元素的顺序

为了能够为const键调用GetID(),函数也必须声明为const:

int GetID() const;

一般规则是,如果只需要对对象进行
const
访问,就要声明一个方法
const
,即
这个
可以是
const
指针,一切都可以正常工作。还要注意
mutable
关键字,它表示即使在
const
方法中也可以更改类成员。一个示例如果你想记录一个对象的最后访问时间。在这种情况下,访问时间戳将是一个<代码>可变的< /代码>成员,因此它可以从<代码> const GETTER方法更新。USER 127817——如果你觉得我的答案令人满意,请考虑接受它。谢谢!