gpt4 book ai didi

c++ - 如何防止类中的类对象尝试在没有默认构造函数的情况下自动构造自身?

转载 作者:行者123 更新时间:2023-11-30 03:13:05 27 4
gpt4 key购买 nike

我有下一节课:

#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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com