我有下一节课:
#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;
}
如何解决这个问题,同时在 Logger 中保持 _fs
私有(private)?
最佳答案
使用内存初始化器列表。像这样定义构造函数
Logger::Logger(const char* filename, bool logToScreen) : _fs( filename ), _logToScreen( logToScreen )
{
}
关于c++ - 如何防止类中的类对象尝试在没有默认构造函数的情况下自动构造自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007693/