在构造函数初始化列表中初始化stringstream引用成员,什么都没有

时间:2012-11-23 20:26:44

标签: c++ reference constructor initialization-list

我尝试初始化一个没有任何内容的字符串流引用成员,说我希望它引用null或者只是保持未初始化。

.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':必须在构造函数base / member初始化列表中初始化

我是否必须初始化初始化列表中的所有变量? 因为我没有将任何字符串流引用传递给构造函数,所以如何初始化它?或者,如果我不想初始化它,请将其留空。我该怎么做?

1 个答案:

答案 0 :(得分: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)
{}