मुझे इस कोड को संकलित करने की कोशिश मैं मिलता है:सी ++ वर्ग आगे घोषणा
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;};
};
मैं न वास्तव में क्या करना है पता है, मैं समाधान के लिए खोज की लेकिन मुझे अपनी समस्या के समान कुछ भी नहीं मिला ... असल में, मेरे पास पैरेंट "टाइल" के साथ और अधिक कक्षाएं हैं और यह ठीक है ... किसी भी मदद के लिए Thanx।
संपादित करें:
मैं संकेत करने के लिए सभी लौट आए प्रकार बदलने के लिए मेमोरी लीक से बचने के लिए फैसला किया है, लेकिन अब मुझे मिल गया:
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() {};
};
क्या 'इनलाइन' को कक्षा परिभाषा में भी जाना नहीं है? मैं इस बारे में भी यकीन है कि कभी नहीं हूँ ... –
@KerrekSB: AFAIR, यह घोषणा या परिभाषा के लिए या तो जाना चाहिए, लेकिन कोई फर्क नहीं पड़ता जो एक –
@KerrekSB: यह केवल परिभाषा पर जाने की जरूरत है; इसे घोषणा पर डालने से कोई प्रभाव नहीं पड़ता है। – ildjarn