Max*_*ker 2 c++ object include header-files member-variables
我是C++的新手,我遇到了设置主体系结构的问题.我学会了如何在C#中使用这个特定的体系结构,但我无法在C++中使用它.我的问题如下:我有2个对象.我希望这些对象彼此"了解",所以我希望将这两个对象作为成员变量引用.
考虑一下:
//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
Run Code Online (Sandbox Code Playgroud)
然而这是不可能的.因为如果没有ifndef的东西你就会有这种无休止的迭代,包括每个人的.h文件.但是对于ifndef,其中一个对象没有包含其他类定义,也不知道它应该创建什么对象.整个问题不会出现在C#中,因为您不必包含.h文件.你甚至没有.h文件:P.当你创建一个新类时,每个其他类都知道这个类的存在.但是在C++中,你必须包含特定类的.h才能生成这个类的对象(或者甚至是引用).
所以,我的问题是.如何将2个对象作为彼此的引用作为自己的成员变量?
感谢您的关注!
干杯,
Maxim Schoemaker
您使用预先声明,它只是:
class Object1; // Pre-declare this class, so we can have pointers to it
Object1 *object1; // Works fine, without having the full declaration of Object1.
Run Code Online (Sandbox Code Playgroud)