Se si dispone di una classe template con una variabile statica, esiste un modo per ottenere che la variabile sia uguale per tutti i tipi della classe, anziché per ognuno?Classe template C++ con membri statici - Uguale a tutti i tipi della classe
Al momento il mio codice è simile a questo:
template <typename T> class templateClass{
public:
static int numberAlive;
templateClass(){ this->numberAlive++; }
~templateClass(){ this->numberAlive--; }
};
template <typename T> int templateClass<T>::numberAlive = 0;
e principali:
templateClass<int> t1;
templateClass<int> t2;
templateClass<bool> t3;
cout << "T1: " << t1.numberAlive << endl;
cout << "T2: " << t2.numberAlive << endl;
cout << "T3: " << t3.numberAlive << endl;
Questo uscite:
T1: 2
T2: 2
T3: 1
Dove come il comportamento desiderato è:
T1: 3
T2: 3
T3: 3
Credo che avrei potuto farlo con una sorta di int globale che qualsiasi tipo di questi incrementi di classe e decrementi, ma quello non sembra molto logico, o orientata agli oggetti
Grazie qualcuno che può aiutarmi a implementare questo.
Queste classi verranno istanziate su più thread? Post incremento/decremento non è thread-safe. –
@ ta.speot.is: Nessuna operazione è nativamente protetta da thread. Non sono sicuro del perché sia rilevante qui; nessuno ha menzionato le discussioni! –
Oh, sì, questi probabilmente dovranno essere usati su più thread, dovrò esaminarlo. – jtedit