Const オブジェクトを 'this' 引数として渡す: 修飾子失格エラー
C で、const オブジェクトを 'this' 引数としてメンバー関数に渡す「メンバー関数の 'this' 引数として 'const xxx' を渡すと破棄される」という結果になる可能性があります修飾子」エラー。これは、const オブジェクトでは禁止されている非 const メンバー関数がオブジェクトを変更する可能性をコンパイラが考慮するために発生します。
問題分析
提供されたコード内の場合、セット内のオブジェクトは const StudentT として保存されます。ループ内でメンバー関数 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 で Const オブジェクトを非 Const メンバー関数に渡すと修飾子失格エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。