1. ホーム
  2. C++

C++] error: 'const xxx' を 'this' 引数として渡すと修飾子が破棄される [-fpermissive] [C++] error: 'const xxx' を 'this' 引数として渡すと修飾子が破棄される。

2022-02-15 05:32:54
<パス
1. エラーメッセージの解析
error: passing 'const xxx' as 'this' argument discards qualifiers [-fpermissive]


直訳: エラー: 'const xxx' を 'this' 引数として渡すと、修飾子が破棄されます。
discards qualifiers: const 型を変更しようとしたときに修飾子を破棄します。
-fpermissive: 非修飾コードに関する特定の診断をエラーから警告にダウングレードします。したがって、-fpermissive を使用すると、いくつかの非修飾コードがコンパイルされるようになります。

2. エラーの再発
struct Count{
    uint32_t c;

    Count(uint32_t i=0):c(i){}

    uint32_t getCount(){
        return c;
    }

    uint32_t add(const Count& count){
        uint32_t total = c + count.getCount();
        return total;
    }
};


add(const Count& count) の引数 count は const で、関数内部で count.getCount(); を呼び出して使用していますが、getCount は非 const です。
メソッドを修正します。
uint32_t getCount() {...} を uint32_t getCount() const {...} に置き換える。