Otsikko sen jo lähestulkoon kertoo. Eli ongelmana on se, että ensimmäinen struct tarvitsee käyttöönsä toista structia, joka taas on määritelty vasta ensimmäisen structin jälkeen. Miten tämän ongelman voisi kiertää? Ongelmana on siis tämä:
struct A { B banda; }; struct B { A ankka };
Enempää en oikein osaa sanoa. Kaipa siihen jokin (ehkäpä aika yksinkertainenkin?) ratkaisu on?
Auttaisiko, jos esittelisit B:n ennen A:ta?
Mutta jos esittelen B:n ennen A:ta niin silloin se ei "löydä" A:ta :)
Edit: No heitän nyt sitten sen koodin ihan kokonaisuudessaan, johon yritän jotain tolkkua saada.
struct Files { string map; string object_map; }; struct Creature { string name; char type; int color; int posx, posy; string lastlvl; Level* current_lvl; }; struct Tile { int x, y; unsigned int attributes; unsigned short int material; char type; int color; Creature* creature; string arealink; string areacoord; }; struct Level { Tile LevelMap[max_x][max_y]; Tile TileMap[max_x][max_y]; Files files; };
Eli ongelmana on juuri se, että jokin näistä pitäisi aina olla ennen toista määriteltynä, mikä taas johtaa uusiin ongelmiin. Ehkäpä pitäisi vain suunnitella asioita uusiksi?
Siis olet luomassa structia A johon sisältyy struct B, johon sisältyy struct A, johon sisältyy struct B, johon sisältyy struct A jne...?
Siitähän seuraisi loputon ketju, eikä se minun mielestäni ainakaan voi onnistua.
Hei, loistavaa! Tuon järkeilyn innoittamana pistän koko roskan uusiksi. Kiitoksia.
Sinänsä ideassasi ei varmaan ollut mitään vikaa, mutta olit vain järkeillyt asian toteutuksen väärin. Veikkaisin, että se mitä yritit tehdä, onnistuu kuitenkin toisella tavalla.
Jatkanpa tähän samaan:
typedef void (*TOnClick)(TMenuItem); class TMenuItem { public: TOnClick *OnClick; };
Eli osoitin funktioon, joka ottaa TMenuItemin parametrinä, mutta TMenuItemia ei ole määritetty vielä. Osaako joku auttaa?
Pistä
class TMenuItem;
ennen tuota typedeffiä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.