Salve ragazzi.
Molto probabilmente a causa della mia scarsa conoscenza del C++ sto avendo serie difficoltà a capire come mai il seguente codice non funziona nel modo in cui spero:
Oggetto.h:
-----------------------------------------codice:using namespace std; #include <iostream> class Oggetto{ public: struct Obj{ char* name; float posX; }; ..... Oggetto(int idPart, int idObj); static Obj getOggParam(); };
Oggetto.cpp:
In un'altra classe voglio creare un vettore di oggetti. Istanzio dunque un vettore:codice:#include "Oggetto.h" int idPrtL; int idOggetto; Oggetto::Oggetto(int idPart, int idObj) { idPrtL = idPart; idOggetto= idObj; } Oggetto::Obj Oggetto::getOggParam(){ //Carico i parametri da un file XML }
vector<Oggetto*> vettOggetti;
e con un ciclo lo riempio con i parametri letti da xml:
vettOggetti.push_back(new Oggetto(a, b));
a e b, ovviamente cambiano ad ogni passaggio nel ciclo e, se mi faccio stampare i valori dell'oggetto appena creato, sono corretti. Però pare che man mano che io riempio il vettore, tutti gli Oggetto contenuti diventano uguali all'ultimo inserito. Così, finito di caricare tutto, ho il vettore vettOggetti, pieno di n elementi tutti uguali!
Eppure il parametro Obj non è una proprietà dell'oggetto Oggetto? O è una proprietà della classe e, perciò, unica? O sbaglio nel passaggio dei parametri?
Ogni aiuto è ben accetto! Grazie!