Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - singleton template
Forum - C/C++ - singleton template

Avatar
tekdu (Normal User)
Rookie


Messaggi: 45
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 15:54
Mercoledì, 15/08/2012
Ho 3 classi parametriche (con i template) di cui una implementa il pattern singleton. il problema è che nel punto in cui richiedo il puntatore al singleton(classi A e B metodo collect() ) il compilatore mi dice che l'oggetto singleton non è stato istanziato.
dovre forse parametrizzare in q,w,e,r,t,y anche A e B ed usare singleton<q,w,e,r,t,y>::getInstance().method(.....); ?
puo' avere conseguenze usare troppi tipi in un template?

ps: il seguente è una specie di pseudocodice in c++ per spiegare il problema


class singleton<q,w,e,r,t,y>{

private :
costruttore(){ resultSum=0}
static *singleton<q,w,e,r,t,y> ptr=NULL;
int resultSum;
public:
*singleton<q,w,e,r,t,y> getInstance();
void method(int partialSum){
      lock(); // threadSafe
      resultSum+=partialSum;
      unlock();
}

}

class A<q,w,e,r>{
public:
void collect(int sum){
     singleton::getInstance().method(sum);
}

}
class B<e,r,t,y>{
public:
void collect(int sum){
     singleton::getInstance().method(sum);
}

}

Ultima modifica effettuata da tekdu il 15/08/2012 alle 16:12


@@@@@@@@@@->TKD_iNsId3<-@@@@@@@@
PM Quote
Avatar
tekdu (Normal User)
Rookie


Messaggi: 45
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 16:33
Giovedì, 16/08/2012
ho risolto (almeno credo.. il compilatore non mi da problemi ora proverò ad usare la  libreria che ho creato) "parametrizzando" tutte le classi ed usando forward declaration negli header file di A e B!  ciao ragazzi!:k:


@@@@@@@@@@->TKD_iNsId3<-@@@@@@@@
PM Quote