我正在使用最新的gcc g++编译器(版本> 6)编译一个过时的项目。
有一个名为CodeWriter
的类,其中包含一个ostream
引用变量。
class CodeWriter
{
//private:
protected:
ostream &m_stream;
public:
CodeWriter(ostream &stream):m_stream(stream){}
~CodeWriter(){
if(m_stream != NULL){
m_stream.flush();
}
}
};
由于该类规模较大,因此我仅包含了相关变量和函数。
您可以看到析构函数似乎正在将引用与NULL
比较。
当我很久以前使用旧的gnu工具链编译此项目时,它可以正常编译。
但现在它会抛出错误,说没有匹配的operator !=
来比较ostream
和long int
。
有人能解释一下这个更改背后的原理,以及我如何修复它吗?
如果需要,我可以提供额外的信息/包括整个类。
nullptr
而不是宏NULL
。(是的,我知道你那里没有指针,但我是在谈论你的空检查意图)。 - user439793