> 백엔드 개발 > C++ > 'WindowsTimer::_주파수에 대한 정의되지 않은 참조'가 발생하는 이유는 무엇이며 어떻게 해결합니까?

'WindowsTimer::_주파수에 대한 정의되지 않은 참조'가 발생하는 이유는 무엇이며 어떻게 해결합니까?

Patricia Arquette
풀어 주다: 2024-12-25 14:21:10
원래의
270명이 탐색했습니다.

Why Does

정적 멤버에 대한 정의되지 않은 참조

이 오류는 컴파일러가 정적 멤버 변수의 정의를 찾을 수 없을 때 발생합니다. 이 경우 WindowsTimer 클래스의 정적 멤버 변수 _주파수와 관련이 있습니다.

코드 이해

제시된 코드는 다음과 같습니다.

class WindowsTimer {
public:
  WindowsTimer() {
    _frequency.QuadPart = 0ull;
  }
private:
  static LARGE_INTEGER _frequency;
};
로그인 후 복사

여기에서 _주파수는 LARGE_INTEGER 유형의 정적 멤버 변수로, 선언되었지만 정의되지는 않았습니다. class.

오류 해결

"WindowsTimer::_주파수에 대한 정의되지 않은 참조" 오류 메시지는 컴파일러가 _주파수 정의를 찾을 수 없음을 나타냅니다. 정적 멤버 변수는 클래스 선언 외부, 일반적으로 구현(.cpp) 파일에서 정의해야 합니다.

오류를 해결하려면 .cpp 파일에 다음 정의를 추가하세요.

LARGE_INTEGER WindowsTimer::_frequency;
로그인 후 복사

이렇게 하면 WindowsTimer에 연결된 _주파수라는 이름의 LARGE_INTEGER 유형의 전역 변수가 생성됩니다. class.

다른 변경 사항이 작동하지 않은 이유

  • _주파수를 _주파수.QuadPart로 변경하면 LARGE_INTEGER 구조체의 QuadPart 멤버만 정의되지만 그렇지 않습니다. _주파수 자체.
  • _주파수를 정적으로 변경 LARGE_INTEGER _주파수.QuadPart는 _주파수를 LARGE_INTEGER.QuadPart 유형의 정적 변수로 재정의하려고 시도하는데 이는 올바르지 않습니다.

위 내용은 'WindowsTimer::_주파수에 대한 정의되지 않은 참조'가 발생하는 이유는 무엇이며 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿