나는 그런C++ 앞으로 선언과 상속
같은 상황
#ifndef _CLASSA
#define _CLASSA
class B;
class A {
virtual void addTo(B*) {}
};
#endif
B.h
#ifndef _CLASSB
#define _CLASSB
#include "A.h"
class B : public A {
B();
void addTo(B* b) {
// blah blah blah
}
};
#endif
B.cpp
#include "B.h"
B::B() : A() {}
MAIN.CPP
A.h이#include "B.h"
int main() {
A* b = new B();
B* d = new B();
b->addTo(d);
}
프로젝트가 컴파일되지 않습니다. A 헤더에서 B를 선언하면 컴파일러는 B.h의 클래스에 대한 기대에 대해 불평합니다. A.h에 B.h 헤더를 포함하면 컴파일러에서 기본 클래스를 확인할 수 없습니다. 이것이 가능한가?
실제 코드는 각 클래스 정의 다음에';'를 생략하고 상속 목록에 악의적 인'class'를 갖고 있습니까? 이 두 구문 오류 모두 컴파일을 방해합니다. –
일반적으로 (a) 문제를 재현하기 위해 컴파일러에 넣을 수있는 실제 코드와 얻는 정확한 오류 (b)를 포함하면 더 나은 답변을 얻을 수 있습니다. –
죄송합니다. 조금 빨리 입력하고 있습니다. I'ts는 지금 고쳤다. – IslandCow