本文へスキップ
BecomeCoder

C++のエラー · エラー9

passing 'const ...' as 'this' argument discards qualifiers ― const違反(コンパイル)

const変数オブジェクトに対して、const が付いていないメンバ関数を呼ぶと出ます。

出るコード

#include <vector>
void show(const std::vector<int>& v) {
    v.push_back(4);   // const参照なのに変更しようとした
}
int main() { std::vector<int> v = {1, 2}; show(v); }

エラーメッセージ

error: passing 'const std::vector<int>' as 'this' argument discards qualifiers [-fpermissive]

直し方

引数を const にした関数の中では要素を変更できません。変更が必要なら引数から const を外すか、コピーを作ってから変更します。