클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

0xBm

다음 수업이 있습니다.

#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'클래스에 대한 기본 생성자가 없습니다."라는 오류가 발생합니다. 여기에 _fs도 생성하는 Logger 생성자의 코드가 있습니다.

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;
}

_fsLogger 에서 비공개로 유지하면서이 문제를 어떻게 해결할 수 있습니까?

Vlad / 모스크바

mem-initializer-list를 사용하십시오. 생성자를 다음과 같이 정의하십시오.

Logger::Logger(const char* filename, bool logToScreen) : _fs( filename ), _logToScreen( logToScreen )
{
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관