我下一堂课:
#include "OutStream.h"
#include "FileStream.h"
class Logger
{
OutStream _os;
FileStream _fs;
bool _logToScreen;
static unsigned int _line;
public:
Logger(const char *filename, bool logToScreen);
~Logger();
void print(const char *msg);
};
该类OutStream
具有默认构造函数,但该类FileStream
没有默认构造函数。当我尝试为构造函数编写代码时,出现Logger
一条错误消息,提示“类'FileStream'不存在默认构造函数”,这是Logger构造函数的代码,在这里我也构造_fs:
unsigned int Logger::_line = 0;
Logger::Logger(const char* filename, bool logToScreen)
{
// Opening the given file in the FileStream class
_fs = FileStream(filename);
// Declaring the value of _logToScreen
_logToScreen = logToScreen;
}
如何_fs
在Logger中保持私有的同时解决此问题?
使用mem-initializer-list。像这样定义构造函数
Logger::Logger(const char* filename, bool logToScreen) : _fs( filename ), _logToScreen( logToScreen )
{
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句