"typeinfo에 대한 정의되지 않은 참조" 오류 이해
"typeinfo에 대한 정의되지 않은 참조" 링커 오류가 발생하면 이러한 메시지의 근본적인 이유. 한 가지 잠재적인 원인은 정의를 제공하지 않고 가상 함수를 선언하는 것입니다.
가상 함수는 다형성을 허용하여 파생 클래스가 기본 클래스에서 상속된 메서드를 재정의하고 다른 구현을 제공할 수 있도록 합니다. 그러나 가상 함수가 정의 없이 선언되면 컴파일러는 구현이 다른 곳에서 제공된다는 것을 나타냅니다. 이는 링커가 연결 단계에서 다른 컴파일 단위나 라이브러리를 참조하여 누락된 정의를 찾으려고 시도한다는 것을 의미합니다.
이 오류를 제거하려면 가상 함수에 정의가 수반되어야 합니다. 이는 함수 선언을 구현과 연결하여 링커가 나중에 참조를 확인하려고 시도하는 것을 방지합니다. 정의된 가상 함수는 다음과 같습니다.
virtual void fn() { /* insert code here */ }
반대로, 정의가 없는 가상 함수 선언은 다음과 유사합니다.
virtual void fn();
이 선언은 정의를 제공하지 못하여 "정의되지 않음"이 발생합니다. typeinfo 참조" 오류.
유사하게 정의하지 않고 외부 변수를 선언하는 것과 비슷합니다. it:
extern int i; int *pi = &i;
이 경우 컴파일러는 'i' 정수가 다른 곳에서 선언되었으며 연결 중에 해결되어야 함을 나타냅니다. 그렇지 않으면 pi는 해당 주소를 참조할 수 없습니다.
위 내용은 내 C 코드에서 'typeinfo에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!