Kiedy próbuję skompilować ten kod uzyskać:C++ klasa naprzód deklaracja
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'
jakaś część mojego kodu:
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;};
};
ja naprawdę nie wiem, co robić, szukałem rozwiązania ale nie mogłem znaleźć czegoś podobnego do mojego problemu ... Właściwie, mam więcej zajęć z rodzicem "płytka" i było ok przed ... Dziękuję za pomoc.
EDIT:
postanowiłem zmienić wszystkie typy zwracane do wskazówek, aby uniknąć wycieków pamięci, ale teraz mam:
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"
jej tylko w klasie bazowej, wszystko jest ok ... Każdy funkcja w klasie płytek które zwracają * dachówka ma ten błąd ...
Niektóre kodu:
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() {};
};
Czy słowo 'inline' nie musi również iść w definicji klasy? Nigdy nie jestem tego zbyt pewny ... –
@KerrekSB: AFAIR, powinien iść do deklaracji lub definicji, ale nie ma znaczenia, który z nich –
@KerrekSB: Musi iść dalej tylko definicji; umieszczenie go w deklaracji nie ma żadnego skutku. – ildjarn