我有一個包含類的頭文件。在這一類中,我有一個函數,像這樣:奇怪的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