"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++에서 \"클래스에 대한 기본 생성자가 없습니다\" 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

C++에서 \"클래스에 대한 기본 생성자가 없습니다\" 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

2024년 12월 22일에 게시됨
검색:251

Why Does C   Throw a \

"클래스에 대한 기본 생성자가 없습니다" 이해 C의 오류

C에서 객체 지향 프로그래밍 작업을 할 때 기본 생성자와 관련된 오류가 발생하는 것은 드문 일이 아닙니다. 이 포괄적인 가이드는 "클래스에 대한 기본 생성자가 없습니다" 문제를 이해하고 해결하는 데 도움이 됩니다.

문제 설명

인스턴스화를 시도할 때 "클래스에 대한 기본 생성자가 없습니다" 오류가 발생합니다. 생성자에 필요한 인수를 제공하지 않고 클래스의 객체를 생성합니다. 기본 생성자는 인수가 지정되지 않은 경우 기본값으로 객체를 초기화하는 특수 멤버 함수입니다.

오류 원인

이 오류의 가장 일반적인 원인은 클래스가 하나 이상의 생성자로 정의되었지만 기본 생성자가 없습니다. 클래스가 생성자를 정의하면 컴파일러는 자동으로 기본 생성자를 생성하지 않습니다.

해결 방법

이 오류를 해결하려면 다음 세 가지 옵션이 있습니다.

1 . 기본 생성자 정의:
아래 수정된 클래스에서 볼 수 있듯이 인수를 사용하지 않는 클래스 내에서 기본 생성자를 정의할 수 있습니다.

class GameCryptography
{
public:
    Blowfish _blowfish;
    GameCryptography();
    void Decrypt(unsigned char packet[]);
    void Encrypt(unsigned char packet[]);
    Blowfish Blowfish;
    void SetKey(unsigned char k[]);
    void SetIvs(unsigned char i1[],unsigned char i2[]);
};

2. 기존 생성자에 인수 제공:
객체를 인스턴스화할 때 생성자에 필요한 인수를 명시적으로 제공할 수 있으므로 기본 생성자가 필요하지 않습니다.

3. "nullptr" 초기화 프로그램을 사용하세요:
이 옵션은 C 20에서만 적용 가능하며 기본 생성자를 명시적으로 정의하지 않고도 개체를 nullptr로 초기화할 수 있습니다:

GameCryptography* gc = nullptr;

추가 고려사항

a. 알고리즘 지정:
ECB 및 CBC와 같은 작동 모드는 알고리즘 자체로 간주되지 않는다는 점에 유의하는 것이 중요합니다. 그렇게 언급하면 ​​오해가 생길 수 있습니다.

b. 컴파일 시간과 런타임 오류:
기본 생성자 오류는 일반적으로 컴파일 시간에 감지됩니다. 이는 프로그램 실행 중에 발생하는 런타임 오류와는 대조적입니다.

이 가이드에 제시된 원인과 해결 방법을 이해하면 작업 시 "클래스에 대한 기본 생성자가 없습니다" 오류를 효과적으로 해결할 수 있습니다. C 클래스.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3