遇到錯誤「將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中文網其他相關文章!