C의 정적 변수 참조 문제
C의 경우 정적이 아닌 클래스 메서드 내에서 정적 변수에 액세스하면 컴파일 오류가 발생할 수 있습니다. 변수가 제대로 정의되지 않았습니다. 흔히 발생하는 오류 중 하나는 "정적 변수에 대한 정의되지 않은 참조"입니다.
문제
다음 코드 조각을 고려하세요.
class Helloworld { public: static int x; void foo(); }; void Helloworld::foo() { Helloworld::x = 10; }
이 코드 비정적 메서드 foo()에서 정적 변수 x에 액세스하는 것을 목표로 합니다. 그러나 이 코드를 컴파일하면 정적 변수 x에 정의가 부족하기 때문에 "정적 변수에 대한 정의되지 않은 참조" 오류가 발생할 수 있습니다.
해결책
해결책은 다음과 같습니다. 클래스 정의 외부에 정적 변수 x에 대한 정의를 제공합니다. 정의는 아래와 같이 클래스 정의 뒤에 추가할 수 있습니다.
class Helloworld { public: static int x; void foo(); }; // Definition of static variable x int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value) void Helloworld::foo() { Helloworld::x = 10; }
클래스 정의 외부에서 정적 변수 x를 정의함으로써 컴파일러는 x에 대한 메모리를 찾아 할당할 수 있습니다. 또한 정적 변수를 특정 값으로 초기화하거나 초기화 프로그램이 없을 때 0으로 초기화되도록 허용하는 것이 중요합니다.
이러한 수정을 통해 코드가 성공적으로 컴파일 및 실행되어 다음을 수행할 수 있습니다. Helloworld 클래스의 비정적 멤버 함수에서 정적 변수 x에 액세스합니다.
위 내용은 C에서 정적 변수에 액세스할 때 '정적 변수에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!