저는 C++을 처음 접했고 기본 아키텍처를 설정하는 데 문제가있었습니다. C#에서이 특정 아키텍처를 사용하는 방법을 배웠지 만 C++에서는 작동하지 않습니다. 내 문제는 다음과 같습니다. 개체가 2 개 있습니다. 나는이 객체들이 서로를 '알기'를 원한다. 그래서 나는이 두 객체의 참조를 그들 자신의 구성원 변수로 원한다.개체의 멤버 변수로 사용되는 C++ 개체 참조
이를 고려
//main.cpp:
#include "Object1.h"
#include "Object2.h"
Object1 *obj1;
Object2 *obj2;
...
obj1 = new Object1(obj2);
obj2 = new Object2(obj1);
...
//Object1.h
#ifndef OBJECT1_H
#define OBJECT1_H
#include "Object2.h"
class Object1 {
public:
Object1(Object2*);
Object2 *obj;
}
#endif
//Object2.h
#ifndef OBJECT2_H
#define OBJECT2_H
#include "Object1.h"
class Object2 {
public:
Object2(Object1*);
Object1 *obj;
}
#endif
이 그러나 불가능하다. 왜냐하면 ifndef를 사용하지 않으면 eachothers .h 파일을 포함하는이 끝없는 반복을 할 수 있기 때문입니다. 그러나 ifndef를 사용하면 객체 중 하나가 다른 클래스 정의를 포함하지 않고 어떤 객체를 만들지 알 수 없습니다. .h 파일을 포함 할 필요가 없기 때문에 C#에서는이 모든 문제가 발생하지 않습니다. 당신은 .h 파일조차 가지고 있지 않습니다 : P. 여러분이 새로운 클래스를 만들면이 클래스가 존재할 때마다 다른 클래스가 모두 존재한다는 것을 알 수 있습니다. 그러나 C++에서는이 클래스의 객체 (또는 참조 객체)를 만들기 전에 특정 클래스의 .h를 포함해야합니다.
내 질문은. 서로의 참조가있는 객체 2 개를 멤버 변수로 어떻게 만들 수 있습니까?
관심을 가져 주셔서 감사합니다.
건배, 그냥
맥심 Schoemaker
생각은 오른쪽에 있지만 일반적으로 앞으로 선언하지 미리 선언으로 알려져있다. (그리고 표준에서는 단순히 선언입니다. 전체 클래스 정의를 제공하는 정의와 반대입니다.) –
고마워요, 그게 꼭 필요한 것 ^^ –