0

null を参照するか、初期化されていないままにしておきたいと言って、stringstream 参照メンバーを何も初期化しようとしました。

.hpp ファイル

class Class{
    private:
        int n;
        stringstream& css;
    public:
        Class(int n);
        Class(stringstream& ss, int i);
    };

.cpp ファイル

Class::Class(int n)
    :   n(n)    
{}

コンパイラは次のように出力します: エラー 1 エラー C2758: 'Class::css' : コンストラクターのベース/メンバー初期化リストで初期化する必要があります

初期化リスト内のすべての変数を初期化する必要がありますか? コンストラクターに stringstream 参照を渡していないため、どうすれば初期化できますか? または、初期化したくない場合は、空白のままにします。どうすればいいですか?

4

1 に答える 1

3

参照メンバーを初期化する必要があります。参照は必要ありません。ポインターが必要です。

class Class{
private:
    int n;
    stringstream* css;
public:
    Class(int n);
    Class(stringstream& ss, int i);
};

Class::Class(int n)
    :n(n), css(nullptr)    
{}

Class::Class(stringstream& ss, int i)
    :n(i), css(&ss)
{}
于 2012-11-23T20:28:44.657 に答える