はまやんはまやんはまやん

hamayanhamayan's blog

C++のコンストラクタで参照渡しをすると「参照が初期化されずに宣言されています」と出る

症状

struct Test {
    string &str;
    Test(string &arg) {
        this->str = arg;
    }
};

のようにクラスを作ると、「参照が初期化されずに宣言されています」と出てコンパイルが通らない

対処法

struct Test {
    string &str;
    Test(string &arg) : str(arg) {}
};

のように初期化の記法を使う。