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

标签 c++ class constructor

我有下一节课:

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

相关文章:

c++ - 我应该在运行时或编译时强制执行 C++ 接口(interface)吗?

C++:如何用拆分查找单词?正则表达式

Python 父类检查子类中要在类函数中使用的属性

java - 为什么 VisualVM float 实例似乎不包含其他类中的 float ?

c++ - CLOCK_MONOTONIC 和 pthread_mutex_timedlock/pthread_cond_timedwait

c++ - 在 OpenGL 中绘制多个相关对象

JavaScript:在创建的对象上将变量设置为新函数,它仍然调用旧函数

javascript - 如何将脚本添加到 React 组件并用作构造函数

java - 继承java中 protected 成员与私有(private)成员

c++ - GCC 4.2.x 是否创建构造函数?