Форвардное объявление класса C ++

Когда я пытаюсь скомпилировать этот код, я получаю:

52 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h invalid use of undefined type `struct tile_tree_apple' 
46 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h forward declaration of `struct tile_tree_apple' 

некоторую часть моего кода:

class tile_tree_apple;

class tile_tree : public tile
{
      public:
          tile onDestroy() {return *new tile_grass;};
          tile tick() {if (rand()%20==0) return *new tile_tree_apple;};
          void onCreate() {health=rand()%5+4; type=TILET_TREE;};        
};

class tile_tree_apple : public tile
{
      public:
          tile onDestroy() {return *new tile_grass;};
          tile tick() {if (rand()%20==0) return *new tile_tree;};
          void onCreate() {health=rand()%5+4; type=TILET_TREE_APPLE;}; 
          tile onUse() {return *new tile_tree;};       
};

Я действительно не знаю, что делать, я искал решение, но я не смог найти ничего похожего на мою проблему ... На самом деле, у меня есть больше классов с родительской "плиткой", и раньше это было нормально ... Спасибо за любую помощь.

РЕДАКТИРОВАТЬ:

Я решил заменить все возвращаемые типы на указатели, чтобы избежать утечек памяти, но теперь я получил:

27 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h ISO C++ forbids declaration of `tile' with no type 
27 C:\Dev-Cpp\Projektyyy\strategy\Tiles.h expected `;' before "tick"

Это только в базовом классе, все остальное в порядке ... Каждая функция в классе плитки, которая возвращает * плитка имеет эту ошибку ...

Некоторый код:

class tile
{
      public:
          double health;
          tile_type type;
          *tile takeDamage(int ammount) {return this;};
          *tile onDestroy() {return this;};
          *tile onUse() {return this;};
          *tile tick() {return this};
          virtual void onCreate() {};
};
13
задан noisy cat 2 February 2012 в 20:28
поделиться