我對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 thingy,你會有無盡的迭代,包括eachothers .h文件。但是在ifndef中,其中一個對象沒有得到包含其他類的定義,也不知道它應該創建什麼對象。 這個問題在C#中不會出現,因爲您不必包含.h文件。你甚至沒有.h文件:P。當你創建一個新班級時,其他班級都會知道這個班級的存在。但是在C++中,必須包含特定類的.h,然後才能創建該類的對象(或者甚至是引用)。
所以,我的問題是。如何使2個對象的引用成爲它們自己的成員變量?
謝謝您的關注!
乾杯,
馬克西姆蘇梅克爾
的想法是正確的,但它通常被稱爲前向聲明,而不是一個預申報。 (在標準中,它只是一個聲明,而不是一個定義,它提供了完整的類定義。) – 2012-01-04 16:27:35
謝謝兄弟,這正是我需要的^^ – 2012-01-04 16:48:02