Sto rivedendo un approccio che vedo comunemente usato nella memorizzazione di oggetti (ad esempio un oggetto client socket). Vale a dire, l'uso di un contenitore statico per contenere gli oggetti. Detti oggetti sono creati da alcune funzioni di aiuto come segue:
create_client(params) {
...
client* cl = new client(...);
return cl;
}
La cosa che mi ha confuso all'inizio era la funzione chiamata così:
if (!create_client (...))
//generate error message
vale a dire. una copia del puntatore sembra essere semplicemente buttata via.
Ma su un'indagine lo vedo nel costruttore del client:
client::client(...) {
...
coll[id] = this;
}
Dove coll è una mappa di id per un puntatore all'oggetto. Ma comunque, solo una collezione. coll è statico (non è sicuro se sia rilevante).
C'è un nome per questo idioma? È una buona pratica?