정적 멤버에 대한 정의되지 않은 참조: 초보자 가이드
정적 데이터 멤버는 클래스 인스턴스 간에 정보를 공유하기 위해 사용되는 경우가 많습니다. 그러나 개발자는 정적 데이터 멤버를 사용할 때 "정의되지 않은 참조" 오류가 발생하는 경우가 있습니다. 이 문제는 선언과 정의의 차이로 인해 발생합니다.
선언 및 정의 이해
선언은 메모리 위치를 지정하지 않고 변수의 존재를 컴파일러에 소개합니다. 반면 정의는 변수에 메모리를 할당하고 해당 주소를 제공합니다.
정적 데이터 멤버의 경우 해당 선언은 클래스 정의 내에서 발생하지만 주소를 할당하지는 않습니다. 실제 정의는 별도로 제공되어야 합니다.
정적 데이터 멤버 정의
"정의되지 않은 참조" 오류를 해결하려면 일반적으로 클래스 정의 외부에 정적 데이터 멤버를 명시적으로 정의합니다. 구현 파일(.cpp). 예를 들어 다음 코드를 고려해보세요.
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
정수형 및 열거형에 대한 예외
정수형 또는 열거형 유형의 정적 데이터 멤버는 클래스 내에서 직접 초기화될 수 있습니다. 정의:
class Example { static const int initialized = 15; };
이 경우 구현 파일의 정의는 초기화:
const int Example::initialized;
템플릿의 정적 데이터 멤버
템플릿의 경우 정적 데이터 멤버는 클래스 선언과 함께 헤더 파일 내에 정의됩니다. 단일 정의 규칙에 대한 예외는 클래스 템플릿의 정적 데이터 멤버에 대한 여러 정의를 허용합니다.
"정적"의 다른 용도
클래스 범위를 넘어서는 "정적"은 추가 의미:
위 내용은 C의 정적 멤버에서 \'정의되지 않은 참조\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!