將聲明轉發到另一個頭文件中合法嗎?例如:在另一個文件中轉發聲明C++
#ifndef _MAIN_H_
#define _MAIN_H_
class ClassA;
class ClassB;
#include "classa.h"
#include "classb.h"
#endif
#ifndef _CLASSA_H_
#define _CLASSA_H_
#include "main.h"
class ClassA
{
public:
ClassB b;
};
#endif
#ifndef _CLASSB_H_
#define _CLASSB_H_
#include "main.h"
class ClassB
{
public:
ClassA a;
};
#endif
A類和B類都相互依賴,並且都有另一種類型的對象。我所做的是在另一個文件中向前宣佈這兩個類。有沒有一種乾淨的方式來做到這一點?
你需要打破這個循環。試着想想如果你試圖創建一個A的實例會發生什麼(創建A,需要創建一個B,需要爲它創建一個A,需要創建一個B,...) – Mat 2012-04-21 18:10:35
這就是耦合。不是嗎?你爲什麼需要對方的定義?具體的例子?如果它們的功能如此相似,你可以將它們變爲子類嗎? – CppLearner 2012-04-21 18:11:04
@CppLearner「你爲什麼需要對方的定義?」我的錯誤 – user52343 2012-04-21 18:17:05