錯誤:將Const 物件作為「this」參數傳遞
在給定的C 程式碼中,您在嘗試存取getId 時遇到錯誤() 和getName() 儲存在 a中的物件的成員函數std::set:
<br>錯誤:將'const StudentT' 作為'int StudentT::getId()' 的'this' 參數傳遞會丟棄限定符<br>錯誤:傳遞'const StudentT' 作為'std::string StudentT::getName()' 的'this'參數丟棄限定符<br>
此錯誤源自於 std::set 中的物件儲存為 const StudentT 實例。當您對這些 const 物件呼叫 getId() 和 getName() 函數時,編譯器會偵測到問題。
在 C 中,不允許非常量成員函數修改 const 物件。 getId() 和 getName() 是非常量函數,可能會修改呼叫它們的物件。但是,由於集合中的物件是 const,因此任何透過這些成員函數修改它們的嘗試都會出錯。
解決方案是將getId() 和getName() 函數也設為const:
int getId() const { return id; } string getName() const { return name; }
透過將這些函數設為const,您表明它們不會修改它們所呼叫的對象,並且編譯器將允許它們在const上使用
此外,建議實現運算符
inline bool operator< (const StudentT & s1, const StudentT & s2) { return s1.getId() < s2.getId(); }
以上是為什麼 `getId()` 和 `getName()` 在 C 中導致「將 'const' 物件作為 'this' 參數傳遞」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!