Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100

    dichiarare attributi static in c++

    Salve, volevo sapere come dichiarare un attributo comune a tutti gli oggetti che instanziano una certa classe.
    Ho usato
    static int counter=0;

    ma dice:

    error: ISO C++ forbids in-class initialization of non-const static member ‘counter’

    ho provato allora:

    const static int counter;

    compila ma quando lo vado ad incrementare nel sorgente dice:

    error: increment of read-only variable ‘UDPClusterApp::counter’

    consigli?

  2. #2
    1. Se dichiari una variabile const non puoi modificarne il valore.

    2. Credo tu abbia una dichiarazione della classe e una implementazione,
    nella dichiarazione della classe puoi dichiarare la variabile static:

    codice:
    static int counter;
    mentre nell'implementazione la puoi inizializzare:

    codice:
    int NomeClase::counter=0;

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    perfetto ti ringrazio, e se invece volessi dichiarare un vettore static?
    per esempio, ho fatto:

    static IPvXAddress *ciao;

    e poi nel sorgente:

    NomeClasse::ciao=new IPvXAddress[N];

    ma mi dà errore:

    error: expected constructor, destructor, or type conversion before ‘=’ token

    come potrei risolvere? grazie.
    PS. IPvXAddress è un oggetto già creato in precedenza.

  4. #4
    codice:
    static IPvXAddress *ciao;
    va bene, ma poi per l'inizializzazione devi ricordare
    che usi un puntatore, quindi:

    codice:
    IPvXAddress *NomeClasse::ciao=new IPvXAddress[N];

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    continua a darmi errore...:

    UDPClusterApp.h:68: error: invalid use of non-static data member ‘UDPClusterApp::N’
    applications/udpapp/UDPClusterApp.cc:34: error: from this location

    edit:

    è bastato dichiarare static anche la variabile N.
    Graize mille.

  6. #6
    A scusa, hai ragione, ma avevo dato per scontato che N
    fosse una definizione del tipo:
    codice:
    #define  N   10
    e non una variabile.

    Comunque è stato un buon esercizio per te

    Buon lavoro!

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