Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146

    [C++] Sovrascrittura elementi di un vettore

    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:
    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
    }
    In un'altra classe voglio creare un vettore di oggetti. Istanzio dunque un vettore:

    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!
    Per Aspera Ad Astra
    -----------------------------------------

  2. #2
    Obj è un tipo di struttura che tu hai definito internamente alla classe Oggetto. Nel costruttore inizializzi le variabili globali idPrtL ed idOggetto; nel codice che hai scritto non ci sono variabili membro della classe Oggetto, ed ovviamente non ci sono assegnamenti a variabili membro.

  3. #3

    Re: [C++] Sovrascrittura elementi di un vettore

    Oggetto.h:
    codice:
    using namespace std;
    #include <iostream>
    
    struct Obj{
    	char* name;
    	float posX;
    };
    
    class Oggetto{
    	
    	struct Obj obj;
    	int idPrtL;
    	int idOggetto;
    
    	public:
    		
    .....
    		Oggetto(int idPart, int idObj);
    		static struct Obj getOggParam();
    };
    -----------------------------------------
    Oggetto.cpp:
    codice:
    #include "Oggetto.h"
    
    Oggetto::Oggetto(int idPart, int idObj) {
    	idPrtL = idPart;
    	idOggetto= idObj;
    }
    struct Obj Oggetto::getOggParam(){
    //Carico i parametri da un file XML
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    Grazie ad entrambi!
    Provo e vi faccio sapere!
    Per Aspera Ad Astra
    -----------------------------------------

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    146
    Risolto facendo come suggerito da menphisx!

    Grazie ragazzi: comincio ad avere un'idea un po' più chiara di variabili membro e variabili globali... ciò non toglie che, magari a breve, abbia ancora bisogno del vostro supporto!


    Per Aspera Ad Astra
    -----------------------------------------

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.