Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - static e template
Forum - C/C++ - static e template

Avatar
esteban (Normal User)
Newbie


Messaggi: 6
Iscritto: 21/11/2010

Segnala al moderatore
Postato alle 11:15
Domenica, 21/11/2010
Codice sorgente - presumibilmente C/C++

  1. template< typename T>
  2. class ListaCurs { // classe Lista con Cursori
  3. ...
  4. ...
  5. private:
  6.    static CellaCurs * spazio; // array spazio dove memorizzare tutti gli elementi
  7. }



Quando nel main istanzio
   ListaCurs<int> * listaInt = new ListaCurs<int> e
   ListaCurs<char> * listaChar = new ListaCurs<char>

ovviamente l'array static spazio per listaInt e listaChar è diverso, ma a me servirebbe averlo in comune. Quindi vorrei spazio in comune per tutte le istanze del template. Se non si può fare effettivamente come static come si può fare? Ed è sempre ovvio che non  voglio creare spazio nel main. Quindi come potrei fare?
Grazie in anticipo per la risposta!

Ultima modifica effettuata da esteban il 21/11/2010 alle 12:05
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 12:15
Domenica, 21/11/2010

a che dovrebbe servire tutto questo?

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 12:23
Domenica, 21/11/2010
Non puoi avere un membro static uguale in due classi diverse.

Quello che puoi fare è istanziare la classe con lo storage statico per i fatti suoi, e poi accedervi tramite NomeClasseStorage::getNomeMembroStatic().

Se vuoi nascondere la classe di storage, puoi dichiararla come inner class protected, e poi derivare le due classi template da questa classe madre che contiene lo storage.

PM Quote
Avatar
esteban (Normal User)
Newbie


Messaggi: 6
Iscritto: 21/11/2010

Segnala al moderatore
Postato alle 12:26
Domenica, 21/11/2010
Per non scrivere tutta la classe e abbreviare, non ho ritenuto opportuno riportarla. Mi serve perchè in spazio memorizzo tipi diversi. Ma indipendentemente dalla finalità, c'è un modo per far condividere una variabile static a tutti i template? O simulare una cosa del genere?

PM Quote
Avatar
esteban (Normal User)
Newbie


Messaggi: 6
Iscritto: 21/11/2010

Segnala al moderatore
Postato alle 12:33
Domenica, 21/11/2010
Grazie mille TheKaneB, la provo e ti faccio sapere.

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 13:41
Domenica, 21/11/2010
ah, chiaramente così facendo il sistema non è thread-safe, prendi questa cosa in seria considerazione se il tuo progetto lavora su thread diversi.

PM Quote