>백엔드 개발 >C++ >C++ 오류: 비정적 데이터 멤버를 초기화해야 합니다. 어떻게 수정하나요?

C++ 오류: 비정적 데이터 멤버를 초기화해야 합니다. 어떻게 수정하나요?

PHPz
PHPz원래의
2023-08-22 17:45:131257검색

C++ 오류: 비정적 데이터 멤버를 초기화해야 합니다. 어떻게 수정하나요?

C++ 프로그래밍에서 클래스의 비정적 데이터 멤버를 정의할 때 생성자 또는 초기화 목록에서 초기화되지 않은 경우 다음 오류가 발생합니다. 비정적 데이터 멤버는 초기화되어야 합니다. 컴파일러가 멤버에 대한 메모리 공간을 할당할 수 없어 클래스 인스턴스화에 실패하게 됩니다.

이 문제를 해결하기 위해 다음과 같은 조치를 취할 수 있습니다.

1. 생성자에서 멤버 변수를 초기화합니다.

클래스 정의 시 멤버 변수를 초기화하지 않으면 생성자에서 초기화할 수 있습니다. 어떤 경우에는 접근 방식이 더 유연합니다. 예:

class Person{
public:
    Person() {
        age = 18;
        name = "Tom";
    }

private:
    int age;
    string name;
};

위 코드에서는 Person 클래스를 정의할 때 age 및 name 멤버 변수를 초기화하지 않고 생성자에서 초기화했습니다. 클래스에 생성자가 여러 개 있는 경우 모든 생성자는 멤버 변수를 초기화해야 합니다.

2. 멤버 초기화 목록에서 초기화

C++에서 멤버 초기화 목록은 클래스의 비정적 멤버 변수를 초기화하는 데 사용되는 방법입니다. 클래스의 비정적 멤버 변수는 생성자 이름 뒤에 콜론을 추가하고 생성자 뒤의 멤버 초기화 목록에 멤버 변수와 해당 초기화 표현식을 설정하여 빠르고 명확하게 초기화할 수 있습니다. 예:

class Person{
public:
    Person(): age(18), name("Tom"){}

private:
    int age;
    string name;
};

위 코드에서는 멤버 초기화 목록을 사용하여 age 및 name 멤버 변수를 초기화합니다.

멤버 변수의 유형이 사용자 정의 유형인 경우 해당 유형에 기본 생성자가 있는지 확인해야 합니다. 그렇지 않으면 컴파일러는 멤버 초기화 목록을 사용하여 초기화할 때 적합한 생성자를 찾을 수 없습니다.

요약

C++에서는 클래스를 정의할 때 클래스의 비정적 데이터 멤버를 초기화해야 합니다. 그렇지 않으면 비정적 데이터 멤버를 초기화해야 한다는 오류가 발생합니다. 이 문제를 해결하려면 생성자에서 멤버 변수를 초기화하거나 멤버 초기화 목록을 사용하여 초기화할 수 있습니다. 어느 쪽이든 모든 멤버 변수가 초기화되었는지 확인하세요.

위 내용은 C++ 오류: 비정적 데이터 멤버를 초기화해야 합니다. 어떻게 수정하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.