|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Codice:
UglySingleton* my_ugly_singleton = UglySingleton::GetInstance();
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
io faccio solo da ambasciatore, non sono abituati ad usare forum quì, quindi se il tipo mi dice che gli serve il singleton avrà i suoi buoni motivi Gli serve che ne esista una sola nel suo processo è corretto, ma se prova ad accedere all'oggetto dalla libreria dinamica e se non dichiara l'oggetto come variabile globale, non funziona. Comunque aggiorno quando mi fanno avere un esempio ... hanno provato anche ad usare un membro statico settato a 5 nel main. La libreria lo visualizza come 0 E io ho ritenuto giusto appiccicare l'adesivo "Certified for Windows Vista" del nuovo monitor sul gabicesso ![]() UglySingleton ... non te piacciono proprio eh
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Ed i buoni motivi erano spesso una cosa del tipo "non so farlo in altro modo".
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Resta il fatto che su Windows non va ... sto aspettando ancora il test, son tutti a pranzo.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Assolutamente, e c'e' chi ha voglia di imparare e chi invece va dritto per l'unica strada che conosce...
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#26 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
In tal caso avresti un link da postare? Interesserebbe anche a me, grazie. Scusate l'OT @EDIT: Quote:
Ultima modifica di banryu79 : 30-01-2008 alle 13:11. |
||
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quella più semplice è portarsi dietro un parametro ovunque venga richiamato il singleton.
|
|
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Yup, di solito faccio cosi' e da' meno problemi di quello che sembra.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ragazzi scusate se mi intrometto, ma quando dovrebbe venire utile un singleton?
Cioè per quali scopi solitamente si usano? Ora come ora non riesco a pensare dove lo userei... |
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Codice:
class MyClass
{
public:
MyClass(MyExSingleton ¶m);
//oppure
void MyPublicMethod(MyExSingleton ¶m);
};
Ovviamente questo non garantisce che non ci siano più istanze di MyExSingleton nel sistema, ma se il progetto è ben scritto (e guidato) basta propagare MyExSingleton a poche classi. |
|
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
In tutti i seguenti casi:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#32 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Se poi ti chiedi: mi hanno sempre insegnato che non si usano le variabili globali nella programmazione OOP, allora ti sei risposto da solo alla domanda: quando posso usare un singleton ? |
|
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
|
|
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
|
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
fek: però mi sono chiesto...in un DLL condivisa fra più eseguibili, come faccio ad accedere ad una istanza condivisa di una classe (allocata da DllMain) se non uso una variabile static o un singleton o una variabile globale ?
|
|
|
|
|
|
#37 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Grazie mille del chiarimento cionci, ho capito la mia non comprensione da cosa era nata:
Quote:
Quote:
Si può fare senza classe Singleton? |
||
|
|
|
|
|
#38 | ||
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Secondo me il problema e' piu' di design: perche' devi accedere da piu' eseguibili ad una istanza condivisa e non puoi usare metodi di comunicazione fra processi piu' affidabili? Quote:
Di nuovo, perche' ti serve garantire una sola istanza di una classe? In questo caso io mettere una variabile statica nella classe e il costruttore forzerebbe il numero di istanze in base a quella variabile, restituendo un eccezione. Non si avrebbero i problemi creati da quell'orribile getInstance(), ma si continuerebbero ad avere tutti i problemi legati alla testabilita' dei Singleton.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 30-01-2008 alle 13:42. |
||
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
ok, in allegato il test fatto con Visual studio.
Ho visto l'output e sembra da una parte funzionare (l'indirizzo della funzione statica è lo stesso sia printato dal main che dalla dll) da un'altra no: c'è, nella classe singleton, una variabile statica int querty = 5 nel main è settata a 7 poi viene printeffata dal main, ed è 7, dalla libreria statica è 7 dalla dll è 97534 ... comunque anche wikipedia (in tedesco) dice che i singleton non vanno su Windows
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
#40 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Quì volevano farmi usare il singleton anche su una classe di string utilities che ho fatto. Io ho messo tutte le funzioni statiche in modo da poterle utilizzare così: Utility::Funzione(...) e loro m'han detto, "il singleton è meglio" ... mi son rifiutato perchè devo creare un'istanza con quel giro di beppe quando ci pensa il C++ automaticamente con le sue funzioni statiche ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:14.





















