내가 구현하는 클래스 세트를하고 난 다음과 같은 방법으로 그것을 할 계획 :스태킹 여러 앞으로 선언
이 (1) 마스터 헤더 파일 (entity.h)이있다네임 스페이스 즉 안에이 모든 클래스 전방 선언 :
namespace SomeNameSpace {
class A;
...
class E;
}
(2) 각각의 클래스 다음 별도의 헤더 파일을 (예 : 아, BH) 클래스를 정의하고 모든 구성 변수와 메소드를 선언 .
(3) 마지막으로 .cpp는 모든 구성원과 통계 (예 : A.cpp, B.cpp)를 정의합니다.
이제이 스키마를 #include "entity.h"
을 실행하여 작동 시키려고했으나 이러한 클래스 중 하나를 사용하려고 할 때마다 "모호성"오류가 발생했습니다. (1) 단계를 건너 뛰고 단순히 각 클래스의 모든 개인 헤더 파일을 포함한다면, 나는 그 문제가 없다. (그것이 내가 코드를 작성한 방법이다.)
어쨌든 내 계획이 실행 가능합니까? 그것을 작동시키는 방법이 있습니까? 필자가 정말로 원했던 것은 모든 사용자 정의 객체를 하나의 네임 스페이스에 넣을 수있는 방법을 찾는 것입니다. 나는 모든 클래스 선언을 하나의 파일에 두는 것으로 그 작업을 할 수 있다고 생각하지만, 엔티티가 부풀어 오르게 만들 것입니다.
키워드 "forward 선언", "C++", "네임 스페이스", "하나의 네임 스페이스", "마스터 헤더", "헤더"로 검색 한 결과 매우 관련성이있는 항목을 찾을 수 없었습니다. 어쩌면 내가하고 싶은 일이 잘못된 것일까?
시원한. 이름이 다른 네임 스페이스가 다른 클래스에서 허용된다는 것을 알지 못했습니다. 나는 그것을 시도 할 것이다. 편집 : B가 B에서 동일한 네임 스페이스를 사용하는 B.h에서 A 클래스를 사용해야하는 경우 어떻게해야합니까? Visual Studio에서는 자동으로 SomeNameSpace를 사용한다고 가정하므로 SomeNameSpace :: B를 사용할 필요가 없습니다.비주얼 스튜디오는 사용자에게 뭔가 잘못되었다는 것을 즉시 알리지 않는 경향이 있기 때문에 (컴파일 타임에 관한 문제조차도) 확인을 요구하고 있습니다. –
흠 음 네가 네 이름 공간 안에 있니? –
그래, 내 C++ 책은 그것에 대해 아무 말도하지 않았다. :/ 팁 주셔서 감사합니다. –