0

我试图初始化一个没有任何内容的字符串流引用成员,说我希望它引用 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)    
{}

编译器给出: Error 1 error C2758: 'Class::css' : must be initialized in constructor base/member initializer list

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

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 回答