Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: [c++]struttura

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]struttura

    Ciao.
    Brevemente:
    Ho un struttura DX_POSITION e voglio passarla ad una fuzione per caricarla con dei dati.
    La struttura è questa:
    codice:
    typedef struct DX_POSITION 
    {
    	string idParent;
    	vector<float*> fTranslate;
    	vector<float*> fRotate;
    	vector<float*> fScale;
    }tagPosition
    la funzione:
    codice:
    void load(DX_POSITION*fTranslate);
    {
       float f[4];
       f[0]=1.;
       f[1]=2.;
       f[2]=3.;
       f[3]=5.;
    
       fTranslate.push_back(f);
    }
    la chiamata:
    codice:
    DX_POSITION pippo;
    load(&pippo);
    i dati vengono inseriti , ma quando esco dalla funzione i valori si resettano.
    Come posso fare?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Ehm... ma sei sicuro che compila sto codice? Perché a vederlo così non si direbbe.
    Dovrebbe essere qualcosa del tipo:
    codice:
    void load(DX_POSITION* fTranslate);
    {
       float* f = new float[4];
       f[0]=1.;
       f[1]=2.;
       f[2]=3.;
       f[3]=5.;
    
       fTranslate->fTranslate.push_back(f);
    }

  3. #3
    codice:
       fTranslate.push_back(f);
    semmai
    codice:
       fTranslate->fTranslate.push_back(f);
    , o sbaglio?
    In ogni caso il problema è che tu memorizzi nel vector un puntatore ad un array allocato sullo stack, che viene distrutto quando esci dalla funzione load. Cosa vuoi memorizzare nel vector esattamente? I 4 float oppure tanti array di float?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    tanti array di float

  5. #5
    E questi array di float devono essere di dimensione fissa o variabile?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Anche io ho un problema simile:

    typedef int Vettore [10];
    typedef struct {
    vector<string> nome;
    vector<Vettore> tipo ;
    int* n_parametri;
    int* occupazione;
    }Tabella;

    nei primi 2 campi della struttura ci voglio memorizzare rispettivamente delle stringhe e dei Vettori(tipo di dato definito con typedef), qual'è la sintassi? devo allocare la memoria con new o basta fare

    Tabella TAB;
    (TAB.nome).clear();
    (TAB.tipo).clear();
    Ci sono solo due cose infinite: l'universo e la stupidità umana. Ma non sono del tutto sicuro della prima

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perche' utilizzi la

    typedef int Vettore [10];

    Cosa devi memorizzarci?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    E' un semplice vettore di 10 interi. Devo creare una "pila" di questi vettori
    Ci sono solo due cose infinite: l'universo e la stupidità umana. Ma non sono del tutto sicuro della prima

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Fossi in te, scriverei

    codice:
       int *vettore;
       vector<int *> x;
    
       vettore=new int[10];
       x.push_back(vettore);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    E per leggerlo faccio bene così?

    vector<int*>::iterator it = x.begin();
    while(it!=x.end()) // Leggo il vector
    {
    cout<<*it<<endl;
    ++it;
    }

    Perchè mi esce il WARNING segmentation fault?
    Ci sono solo due cose infinite: l'universo e la stupidità umana. Ma non sono del tutto sicuro della prima

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.