2015-01-04 1 views
0

Я объявляющего два класса, как в следующем, А родительский класс, B подкласс A:класс Parent имеет статический экземпляр класса ребенок 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

Ваш дизайн должен дезодорантом. –

+1

Форвардное объявление 'class B;' отлично. В циркуляре нет. Scrape '#include" b.h "' –

ответ

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

Смежные вопросы