Const オブジェクトを 'this' 引数として渡す: 修飾子失格エラー
C で const オブジェクトを 'this' 引数としてメンバー関数に渡す「メンバー関数の 'this' 引数として 'const xxx' を渡すと修飾子が破棄されます」というエラーが発生する可能性があります。これは、const オブジェクトでは禁止されている非 const メンバー関数がオブジェクトを変更する可能性をコンパイラが考慮するために発生します。
問題分析
提供されたコードの場合、セット内のオブジェクトは const StudentT として保存されます。ループ内でメンバー関数 getId() および getName() にアクセスすると、オブジェクトが const であり、メンバー関数が const としてマークされていないため、コンパイラはこの問題を検出します。
Solution
エラーを解決するには、getId() 関数と getName() 関数を const:
int getId() const { return id; } string getName() const { return name; }
これにより、const ルールに違反することなく関数を const オブジェクトで呼び出すことができます。
補足
inline bool operator
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3