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 중국어 웹사이트의 기타 관련 기사를 참조하세요!