Когда я пытаюсь скомпилировать этот код, я получаю:
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() {};
};