나는 두했습니다 보자 .cpp
파일 : a.cpp
및 b.cpp
다음과 같은 클래스 defenition를 포함하는 :
//a.cpp
class A
{
public:
A(){ \\some actions }
}
//b.cpp
class A;
class B : A
{
public:
B():A(){ \\some actions }
}
하지만 컴파일 시간에 오류가 발생했습니다. 오류 설명은 다음과 같습니다.
ConcreteSubject.cpp : 5 : 25 : 오류 : '클래스 제목'불완전한 유형의 사용이 잘못되었습니다. ConcreteSubject.cpp : 3 : 7 : 오류 : '클래스 제목'의 앞으로 선언 ConcreteSubject.cpp : 생성자 'ConcreteSubject :: ConcreteSubject ()' : ConcreteSubject.cpp : 21 : 38 : 오류 : 'Subject'유형은 'ConcreteSubject'의 직접적인 기반이 아닙니다.
피할 수 #include "a.cpp"
있습니까?
A의 클래스 선언을 헤더 파일로 이동하고 해당 헤더 파일을 파일에 포함해야 b.cpp
합니다. 이렇게하지 않으면 b.cpp 컴파일 단위는 클래스 A에 의해 구현 된 (명시 적으로 또는 암시 적으로) 생성자의 목록을 알 수있는 방법이 없습니다.
cpp 파일을 포함하는 것은 좋은 생각이 아닙니다. 이러면 안됩니다.
//a.h
class A
{
public:
A();
}
//a.cpp
A::A(){ \\some actions }
//b.cpp
#include "a.h"
class B : A
{
public:
B():A(){ \\some actions }
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다