我尝试初始化一个没有任何内容的字符串流引用成员,说我希望它引用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初始化列表中初始化
我是否必须初始化初始化列表中的所有变量? 因为我没有将任何字符串流引用传递给构造函数,所以如何初始化它?或者,如果我不想初始化它,请将其留空。我该怎么做?
答案 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)
{}