나는 이미 오류에 관한 게시물을 보았지만 이것은 약간 다릅니다. 그러니 이걸 닫지 마십시오. 인터페이스 클래스가 있고 인터페이스 클래스를 상속하고 인터페이스 클래스의 메서드를 오버라이드하는 클래스가 있습니다. 이 코드는 좋아해 보인다.기본 클래스가 정의되지 않았습니까?
//interface file
//Interface.h
class A
{
virtual method1();
};
//b.h
#include "Interface.h"
class B : public A
{
//declaration
}
//b.cxx
#include b.h
B::method1()
{
//definition
}
나는이 모든 클래스를 dll로 내보내겠다. 그리고 exe에서 dll에 메서드와 클래스를 사용하고 있습니다. 이 exe는 또 다시 somes 클래스를 포함합니다. 이러한 클래스는 동일한 인터페이스 파일을 상속하며 method1()도 사용합니다. 그래서 method1() 내 파일에 b.h를 포함하고 있습니다. 내 include 문 순서가 Interface.h 및 b.h 인 경우 exe에 대한 컴파일러 오류가 발생합니다. "기본 클래스가 정의되지 않았습니다"라고 말함. 하지만 Include 문을 재정렬하면 컴파일 오류가 발생하지 않습니다. 어느 누구도이 문제의 근본적인 원인이 될 수있는 것을 제안 할 수 있습니까?
당신이 전체 오류를 첨부 할 수 있습니다 : 두 번째는, 적어도 위의 코드에서,
B
의 클래스 정의에method1
를 선언하지 않는 것이 무엇입니까? 단순히 오류를 잃어 버렸을 수 있습니다. –실제 오류 메시지가 표시되는 코드 조각과 전체 오류 메시지를 게시하십시오. 그렇지 않으면 우리 모두가 짐작할 수 있습니다. – arne