文件Dog.hC++的#include環
#ifndef DOG_H
#define DOG_H
#include "Cat.h"
//class Cat;
class Dog
{
Cat c;
};
#endif
文件Cat.h
#ifndef CAT_H
#define CAT_H
#include "Dog.h"
//class Dog;
class Cat
{
Dog d;
};
#endif
這將導致一個循環,問題是,這兩個類需要了解對方;前向聲明也不能解決問題。您可以創建Dog d或Cat c的指針來解決它。
問題:真的沒有辦法不創建指針,即保持代碼原樣而不重寫我希望它是什麼?
爲什麼前聲明不解決呢? – dlavila
答案:不會。你會如何構建一個包含它自己的對象?如果你認爲你需要這樣的事情,你也應該重新考慮你的設計。 – StoryTeller
這不可能是你想要的,因爲即使你可以解決聲明的順序,在每個類中包含另一個類在邏輯上是不可能的。必須有一個指針或參考;而且不需要包含標題。 –