Typeinfo에 대한 정의되지 않은 참조: 원인 및 해결 방법
두려운 "typeinfo에 대한 정의되지 않은 참조" 오류는 C 개발자를 괴롭혀 당황하게 만들 수 있습니다. 그 기원. 뒤에서 이 오류는 링커가 해당 정의 없이 가상 함수 선언을 발견했을 때 발생합니다.
가상 함수는 파생 클래스에서 재정의되도록 설계되어 다형성 동작을 가능하게 합니다. 그러나 정의 없이 가상 함수를 선언하면 정의가 다른 곳에 있다는 것을 의미합니다. 이렇게 하면 링커가 누락된 정의에 대해 외부 컴파일 단위나 라이브러리를 검색하게 됩니다. 링커가 이를 찾지 못하면 "typeinfo에 대한 정의되지 않은 참조" 오류가 나타납니다.
다음 선언을 고려하세요.
virtual void fn();
이 선언은 fn()이 가상 함수임을 컴파일러에 알립니다. 그러나 구현을 제공하지는 않습니다. 링커는 연결 단계에서 이를 해결되지 않은 기호로 표시하여 오류를 발생시킵니다.
이를 수정하려면 가상 함수에 대한 정의를 제공해야 합니다.
virtual void fn() { /* Implementation here */ }
첨부하여 선언에 정의를 추가하면 링커는 더 이상 누락된 기호를 검색할 필요가 없습니다.
이 오류는 다음 코드와 유사합니다. snippet:
extern int i; int *pi = &i;
이 경우 i는 다른 컴파일 단위에 위치한 외부 변수로 선언됩니다. 이를 위해서는 링커가 외부 참조를 확인해야 하지만 i를 찾을 수 없는 경우 해결되지 않은 기호 오류가 보고됩니다.
"typeinfo에 대한 정의되지 않은 참조" 오류의 근본적인 원인을 이해함으로써 개발자는 즉시 문제를 해결할 수 있습니다. 가상 기능에 대한 적절한 정의를 제공하거나 외부 기호 참조를 적절하게 처리하여 문제를 해결합니다.
위 내용은 C에서 'Typeinfo에 대한 정의되지 않은 참조' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!