게임을 만들고 있는데 클래스가 있고 코드에 Block
클래스가 있는데 둘 다 서로 필요하지만 별도의 파일에 있습니다. 수업을 "미리 정의하는"방법이 있습니까? Objective-C의 @class 매크로처럼?C++ : 서로 필요한 두 클래스
7
A
답변
5
순환 종속성이라고합니다. 클래스에서 Two.h
class One;
class Two {
public:
One* oneRef;
};
그리고 클래스의 One.h
class Two;
class One {
public:
Two* twoRef;
};
은 "클래스 하나;" 및 "클래스 2;" 지시문은 클래스 이름을 각각 "One"및 "Two"로 할당합니다. 그러나 그들은 그 이름을 초월한 다른 세부 사항을 정의하지 않는다. 따라서 당신은 포인터를 클래스를 만들 수 있지만 전체 수업과 같이 포함 할 수 없습니다
class One;
class Two : public One {
};
class Three {
public:
One one;
};
컴파일러가 클래스 하나가 알고있는 동안, 그것은 '아무튼 때문에 위의 두 예는 컴파일되지 않습니다 이유는 실제 클래스 정의가 아닌 이름 만 정의 되었기 때문에 클래스 One에 포함될 수있는 필드, 메소드 또는 가상 메소드를 알 수 없습니다.
11
예.
class Man;
이렇게하면 Man
이 "불완전한 유형"으로 선언됩니다. 포인터 나 참조 및 다른 몇 가지 사항을 선언 할 수 있지만 인스턴스를 만들거나 멤버에 액세스 할 수는 없습니다. 이것은 불완전한 유형으로 할 수 있거나 할 수없는 것에 대한 완전한 설명은 아니지만 일반적인 생각입니다.
+1
중요한 점은 계속 진행하고 전체 유형을 나중에 포함하여 액세스 할 수 있다는 것입니다. 헤더에 불완전한 타입을 사용하고 그것을 사용하기 위해 전체 헤더 정의를 cpp에 포함시킬 수 있습니다. –
관련 문제
- 1. 두 파일이 C++ 문제로 서로 포함됩니다.
- 2. 두 코드가 서로 동일합니까?
- 3. 두 클래스를 서로 선언하십시오.
- 4. C# : 두 개의 인터페이스를 구현하는 인수가 필요한 함수의 기본 패턴
- 5. ManagementObjectSearcher - 두 클래스 (C#을)
- 6. OOP : Bestish Practices : 서로 이야기하는 두 클래스 얻기
- 7. 두 폼을 서로 참조하는 방법
- 8. 두 쿠키는하지만, 서로 다른 값
- 9. 두 개의 서로 다른 금액
- 10. 서로 의존하는 두 개의 슬라이더
- 11. C++/VS2005 : 두 개의 서로 다른 .cpp 파일에 동일한 클래스 이름 정의
- 12. 두 개의 서로 다른 행에 구문이 있습니까?
- 13. 두 개의 C# .Net 프로젝트를 서로 신뢰하도록 설정하는 방법이 있습니까?
- 14. C# 두 개의 서로 다른 스레드에서 싱글 톤 작업
- 15. 두 개의 서로 다른 서브넷 컴퓨터 연결
- 16. 두 클래스가 서로 친구가 될 수 있습니까?
- 17. grep 두 단어가 서로 가까이 있습니다.
- 18. ctor에 인수가 필요한 싱글 톤 클래스
- 19. 서로 다른 두 가지 방식으로 서로 관련이있는 두 모델간에 ActiveRecord 관계를 정의하는 방법은 무엇입니까?
- 20. 동일한 코드가 서로 다른 두 가지 앱에서 서로 다른 두 가지 작업을 수행하고 있습니까?
- 21. 두 사람이 서로 다른 시간에 서로 다른 두 가지 이벤트를 시작하는 방법은 무엇입니까?
- 22. 두 개의 서로 다른 JVM에서 실행되는 두 응용 프로그램이 서로 상호 작용하는 방법은 무엇입니까?
- 23. Objective C, C++, 동일한 클래스 이름을 가진 두 파일 포함
- 24. ASP는 두 개의 서로 다른 씨앗
- 25. 두 개체가 서로 종속되어 있습니다. 그게 나쁜가요?
- 26. 두 사각형을 서로 밖으로 이동 시키려면 어떻게합니까?
- 27. MySQL은 두 개의 시리즈를 서로 나눕니다.
- 28. 두 개의 서로 다른 소스 폴더,
- 29. 삭제가 가능한 두 개의 서로 다른 장소
- 30. 서로 죽일 수있는 두 개의 스레드를 사용해야합니까?
원하는 사운드는 전달 선언입니다. – mooware
+1 BlockDude입니다. –