エラー: Const オブジェクトを「this」引数として渡す
指定された C コードで、getId にアクセスしようとしているときにエラーが発生しましたに格納されたオブジェクトの () および getName() メンバー関数std::set:
<br>エラー: 'const StudentT' を 'int StudentT::getId()' の 'this' 引数として渡すと修飾子が破棄されます<br>エラー: 'const を渡すStudentT' を 'std::string StudentT::getName()' の 'this' 引数として破棄しますqualifiers<br>
このエラーは、std::set 内のオブジェクトが const StudentT インスタンスとして格納されていることが原因で発生します。これらの const オブジェクトに対して getId() 関数と getName() 関数を呼び出すと、コンパイラは問題を検出します。
C では、非 const メンバー関数は const オブジェクトを変更できません。 getId() と getName() は非 const 関数であり、呼び出されたオブジェクトを変更する可能性があります。ただし、セット内のオブジェクトは 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(); }
以上がC で「getId()」と「getName()」が「'const' オブジェクトを 'this' 引数として渡す」エラーを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。