Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567

    [C++] dichiarazione variabili "pubbliche"

    ho un programma composto da 3 sorgenti:

    main.cpp
    cfr.h
    cfr.cpp

    cfr č una classe (in particolare una qWidget, ma č irrilevante).

    Ho bisogno di avere alcune variabili (e alcuni typedef struct ...) "pubbliche", quindi utilizzabili in tutti e tre i moduli. Ovviamente devono condividere anche i valori e non solo il nome... quindi se in main i=5 anche in cfr.cpp i=5...

    un po' come le Public di VB

    Come posso fare?
    thx
    "Come vedi tutto č usuale, solo che il tempo chiude la borsa e c'č il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

  2. #2
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Se nno sbaglio...devi aggiungere la parola kiave extern nella dikiarazione della variabile:
    codice:
    extern int i;
    non lo mai provato...

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    esatto, puoi ad esempio dichiare le variabili nel file del main, e poi ridichiarale, senza inizializzazione, e precedute da extern negli altri file.

    P.S.: nella programmazione ad oggetti le variabili globali non dovrebbero essere usate, perkč invece non utilizzi delle variabili statiche di una classe? Essendo statiche sono visibili dapperutto, cioč dovunque venga inclusa la definizione della classe, ed esistono in un'unica copia, perō sono chiuse all'interno di una classe, cosi tutto č piu coerente,


  4. #4
    Ma se io dichiarassi la variabile/struct all'esterno del main in uno qualsiasi dei tre file (con l'accortezza che la variabile/struct sia dichiarata prima delle classi che devono usarla)?
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da AnĒkin
    Ma se io dichiarassi la variabile/struct all'esterno del main in uno qualsiasi dei tre file (con l'accortezza che la variabile/struct sia dichiarata prima delle classi che devono usarla)?
    Credo proprio ke dovresti fare cosė:
    codice:
    //File ciao.cpp (senza main)
    
    struct vostronome
    {
      char nome[21];
    };
    
    extern vostronome nome_della_variabile;

  6. #6
    Utente di HTML.it L'avatar di Beziel
    Registrato dal
    Oct 2002
    Messaggi
    697
    basta che le dichiari come publiche e statiche



  7. #7
    Originariamente inviato da FinalFantasy
    Credo proprio ke dovresti fare cosė:
    codice:
    //File ciao.cpp (senza main)
    struct vostronome { char nome[21]; };
    extern vostronome nome_della_variabile;
    Sul codice che sto facendo io semplicemente dichiaro le mie strutture all'esterno del main
    tipo ad es.
    struct vostronome
    {
    char nome[21];
    } nome_della_variabile;

    e vi accedo da tutte le mie classi. Sempre dichiarando le strutture prima delle classi che dovranno usarle. Non so in eleganza, ma in funzionalitā a me va .
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    sono troppo noob...

    vediamo, ho sempre i miei tre moduli

    main.cpp
    cfr.h
    cfr.cpp

    ho bisogno di utilizzare un tipo cosė definito:

    codice:
    typedef struct tSeries {
      vector<double> mTime;
      vector<double> T1;
      vector<double> T2;
      vector<double> V;
      vector<double> i;
    } tSerie;
    e di creare una variabile del genere:

    codice:
    vector<tSerie> mSerie;
    ora... devo accedere a questa variabile da entrambi i *.cpp... come faccio? dove/come la dichiaro? (ho provato a mettere un po' di extern ma mi dā errore)

    "Come vedi tutto č usuale, solo che il tempo chiude la borsa e c'č il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

  9. #9
    Originariamente inviato da AleX ZeTa
    sono troppo noob...

    vediamo, ho sempre i miei tre moduli

    main.cpp
    cfr.h
    cfr.cpp

    ho bisogno di utilizzare un tipo cosė definito:

    codice:
    typedef struct tSeries {
      vector<double> mTime;
      vector<double> T1;
      vector<double> T2;
      vector<double> V;
      vector<double> i;
    } tSerie;
    e di creare una variabile del genere:

    codice:
    vector<tSerie> mSerie;
    ora... devo accedere a questa variabile da entrambi i *.cpp... come faccio? dove/come la dichiaro? (ho provato a mettere un po' di extern ma mi dā errore)

    se non erro metti la dichiarazione
    codice:
    extern tua_var;
    su TUTTI i file .cpp in cui ti serve

    Ah se la vuoi inizializzare devi farlo solo in un file e negli altri fai come ti ho detto sopra

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    avevo provato... quando vado in make restituisce questo errore:

    codice:
    main.o(.text+0x144): In function `main':
    /home/alex/Programmazione/C++/cfr/cfr/main.cpp:110: undefined reference to `mSerie'
    main.o(.text+0x15f): In function `main':
    /usr/include/c++/3.2.2/bits/stl_vector.h:980: undefined reference to `mSerie'
    main.o(.text+0x183):/usr/include/c++/3.2.2/bits/stl_vector.h:981: undefined reference to `mSerie'
    main.o(.text+0x1aa):/usr/include/c++/3.2.2/bits/stl_vector.h:986: undefined reference to `mSerie'
    main.o(.text+0x1d1):/usr/include/c++/3.2.2/bits/stl_vector.h:988: undefined reference to `mSerie'
    main.o(.text+0x1f8):/usr/include/c++/3.2.2/bits/stl_vector.h:989: more undefined references to `mSerie' follow
    collect2: ld returned 1 exit status
    che non č presente se tolgo quell'extern (ma a questo punto non mi vede le variabili dall'esterno)

    ma forse ho capito male... se io la voglio dichiarare in main.cpp, l'extern lo devo mettere in main.cpp oppure in cfr.cpp? (io ora l'ho messo in main.cpp)

    "Come vedi tutto č usuale, solo che il tempo chiude la borsa e c'č il sospetto che sia triviale l'affanno e l'ansimo dopo una corsa, l'ansia volgare del giorno dopo, la fine triste della partita, il lento scorrere senza uno scopo di questa cosa che chiami vita."

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.