首頁 > 後端開發 > C++ > 如何修復 C 中的「將 const xxx 作為成員函數的「this」參數傳遞丟棄限定符」錯誤?

如何修復 C 中的「將 const xxx 作為成員函數的「this」參數傳遞丟棄限定符」錯誤?

Barbara Streisand
發布: 2024-12-10 08:34:10
原創
239 人瀏覽過

How to Fix

錯誤解決:處理「將Const 參數作為「This」參數傳遞」

遇到錯誤「將const xxx 作為成員函數的「this」參數傳遞時會丟棄限定符,」它表示正在const 物件上呼叫非常量成員函數。在這種情況下,當存取儲存在 std::set 中的 StudentT 物件的 getId() 和 getName() 方法時,就會出現問題。

問題分析

std::set 中的物件儲存為 const StudentT。在迭代器取消引用 (*itr) 上呼叫 getId() 和 getName() 時,編譯器會偵測到不匹配。成員函數是非 const,但存取的物件是 const。

要解決此問題,成員函數getId() 和getName() 應宣告為const 方法:

int getId() const {
    return id;
}
string getName() const {
    return name;
}
登入後複製

透過將它們宣告為const 方法:

透過將它們宣告為const 方法,可以保證它們不會修改StudentT 對象,從而可以安全地呼叫它們const 物件。

額外注意事項
inline bool operator< (const StudentT & s1, const StudentT & s2) {
    return s1.getId() < s2.getId();
}
登入後複製

運算子

運算子也應該宣告為const 方法,因為在執行集合運算時,它會在const StudentT物件上呼叫:透過將其宣告為const,它可以確保運算子不會修改正在比較的物件。

以上是如何修復 C 中的「將 const xxx 作為成員函數的「this」參數傳遞丟棄限定符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板