19/07/12 8:13
Io uso una lista (enemys) di puntatori ad oggetti En e devo eseguire la funzione moveFrame() per ogniuno, quindi scrivo:
Facendo il debug del codice il programma entra nel for ma facendo "Step Into" sull'istruzione moveFrame() non entra nella funzione, non riesco a eseguirla...
Quindi ho provato a spostare il break point nel comando En::moveFrame()
e mi dice sul break point che non potrà essere mai raggiunto perchè non è stato compilato a causa di un ottimizzazione da parte del linker non ho capito perchè il linker rimuova un pezzo di codice usato e non so come risolvere questo problema.
Aggiungo anche (non penso sia un problema, ma non si sa mai) che uso l'oggetto En nel file Sq.cpp e non accedo ai suoi membri direttamente, nè lo inserisco io nella lista, è il suo costruttore a farlo.
Ringrazio in anticipo chi avrà la pazienza di aiutarmi, grazie
for(list<En*>::iterator it = enemys.begin(); it != enemys.end(); it++) { (*it)->moveFrame(); }
Facendo il debug del codice il programma entra nel for ma facendo "Step Into" sull'istruzione moveFrame() non entra nella funzione, non riesco a eseguirla...
Quindi ho provato a spostare il break point nel comando En::moveFrame()
void En::moveFrame() { if(!pause) { pos.angle += aSpeed; pos.dist -= lSpeed; } }
e mi dice sul break point che non potrà essere mai raggiunto perchè non è stato compilato a causa di un ottimizzazione da parte del linker non ho capito perchè il linker rimuova un pezzo di codice usato e non so come risolvere questo problema.
Aggiungo anche (non penso sia un problema, ma non si sa mai) che uso l'oggetto En nel file Sq.cpp e non accedo ai suoi membri direttamente, nè lo inserisco io nella lista, è il suo costruttore a farlo.
mainSq = new Sq(sq, CartPoint(width / 2, height / 2)); new En(mainSq, en, PolarPoint(400, 0));
En::En(Sq *parent, ALLEGRO_BITMAP *image, PolarPoint position, float linearSpeed, float angularSpeed, bool sPause): owner(parent), img(image), pos(position), lSpeed(linearSpeed), aSpeed(angularSpeed), pause(sPause) { parent->addEn(this); }
void Sq::addEn(En *enemy) { enemys.push_back(enemy); } // Dove enemys: list<En*> enemys;
Ringrazio in anticipo chi avrà la pazienza di aiutarmi, grazie
Ultima modifica effettuata da 19/07/12 8:14