2015-01-04 153 views
0

我聲明兩個類,如下面的靜態實例,A是父類,B子答:父類包含子類C++

//a.h 
#include "b.h" 
//class B;  Adding this line doesn't work 
class A{ 
    static B b; 
} 

//b.h 
#include "a.h" 
class B:public A{  // XCode error here: expected class name 

} 

然而,的XCode 6.1別讓我編譯一直在說「預期班級名稱」。

實際上,我試圖實現一本書中提到的狀態機遊戲編程模式http://gameprogrammingpatterns.com/state.html#static-states。在該書中,父狀態類擁有子類的靜態實例。

+1

您的設計需要除臭劑。 – 2015-01-04 13:54:06

+1

前向聲明'class B;'很好。通知不包括。刮'#包括「b.h」' – 2015-01-04 13:57:54

回答

3

下面的代碼就足夠你: -

//b.h 
#include "a.h"  <<<< This requires full definition for `A`. 
class B : public A 
{ 

} 

//a.h   <<<<< No need to include any file. 
class B; 
class A{ 
    static B b; 
}; 
+0

非常感謝。添加包含文件已成爲我的第二個本質。 – shapeare 2015-01-04 14:01:35