我对 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
然而这是不可能的。因为如果没有 ifndef 东西,您将有包含 eachothers .h 文件的无休止的迭代。但是使用 ifndef 对象之一不会包含其他类定义,并且不知道它应该创建什么对象。这整个问题不会出现在 C# 中,因为您不必包含 .h 文件。你甚至没有 .h 文件:P。当你创建一个新班级时,其他班级都知道这个班级的存在。但是在 C++ 中,您必须包含特定类的 .h 才能创建此类的对象(甚至是引用)。
所以,我的问题是。如何使两个相互引用的对象作为它们自己的成员变量?
感谢您的关注!
干杯,
马克西姆·舒梅克