Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    117

    [C++] Inizializzazione variabile statica all'interno di una classe

    Salve!
    Sto scrivendo una classe con una variabile membro statica (ovvero una variabile di classe), ma non ho ben capito dove fare la prima inizializzazione.
    Ho cercato un po' e ho visto che andrebbe fatta o all'inizio del file .cpp col main oppure nel file .h (dopo la definizione della struttura interna della classe). Nel primo caso (all'inizio del file con il main) l'inizializzazione funziona senza problemi. Tuttavia non ritengo corretto che sia l'utilizzatore della classe a settare la variabile statica, ma chi realizza la classe. Ho quindi provato a mettere l'inizializzazione dopo aver definito la classe (nel file .h), ma mi dà errore.
    In alternativa, anche se non l'ho trovato scritto da nessuna classe, ho messo l'inizializzazione all'inizio del file .cpp dove implemento le funzioni membro della classe, e non mi dà alcun problema (ma non so se sia corretto).

    Vi posto il file .h, come lo vorrei scrivere io con l'inizializzazione della variabile statica, che mi dà problema.

    codice:
    #ifndef _ANIMALE_H_
    #define _ANIMALE_H_
    
    #include "animale.h"
    
    class Animale
    {
          public:
                  Animale(const char* NOME,const int ETA,const char* SP);
                  ~Animale();
                  virtual void verso() const=0;
                  void scheda() const;
                  static void leggiConteggio();
    
          private:
                  char* nome;
                  int eta;
                  char* sp;  //segni particolari
                  static int count;
    };
    
    int Animale::count=0;    // E' QUESTA L'INIZIALIZZAZIONE CHE DA' PROBLEMI!!!
    
    #endif
    L'errore che mi dà:
    codice:
      multiple definition of `Animale::count' 
      first defined here 
      ld returned 1 exit status



  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma il file che hai mostrato e' il file

    animale.h

    ?

    E se e' cosi', perche' lo includi

    #include "animale.h"

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    117
    Effettivamente forse non ci voleva (ho iniziato ieri a riprendere il C++ dopo qualche anno di fermo).
    Grazie per avermelo fatto notare, anche se in ogni caso, anche correggendo l'errore permane (ed altre classi funzionanti, pur facendo questo sbaglio non ne soffrivano).

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma di quale errore parli?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: [C++] Inizializzazione variabile statica all'interno di una classe

    Originariamente inviato da Cell
    In alternativa, anche se non l'ho trovato scritto da nessuna classe, ho messo l'inizializzazione all'inizio del file .cpp dove implemento le funzioni membro della classe, e non mi dà alcun problema (ma non so se sia corretto).
    Si, è corretto. Soltanto se la classe è un template, l'inizializzazione della variabile statica può stare nell'header.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    117

    Re: Re: [C++] Inizializzazione variabile statica all'interno di una classe

    Originariamente inviato da shodan
    Si, è corretto. Soltanto se la classe è un template, l'inizializzazione della variabile statica può stare nell'header.
    Perfetto! Grazie mille!


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 © 2025 vBulletin Solutions, Inc. All rights reserved.