/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Singleton
Fra : Christian Larsen


Dato : 30-10-03 20:59

Hej NG

Jeg er for nylig begyndt at rode med singletons (mest for at lære det), og
nu er der et par spørgsmål, der dukker op, som jeg tror, I kan hjælpe mig
med. Det drejer sig om, at jeg gerne vil have en Singleton klasse, der
bruger templates. Fx noget meget simpelt i retning af:

<->
template <typename T> class Singleton
{
public:
static T& GetInstance();
static T* GetInstancePtr();

protected:
static T* m_pInstance;

Singleton();
};
<->

Mit spørgsmål går på, hvorledes jeg så sikrer, at det kun er GetInstance(),
GetInstancePtr() eller måske evt. en Create()-funktion, der kan oprette en
instans af klassen. Copy constructoren skal også være protected går jeg ud
fra, men skal = operatoren det også?

Er det desuden nødvendigt at deklarere disse (constructor, copy constructor
og operator=) som protected i nedarvede klasser for at undgå, at compileren
selv genererer dem og dermed bl.a. opretter en public default constructor?
Så vidt jeg kan se ud fra mine eksperimenter, er det nødvendigt, men er der
en vej uden om dette?

En sidste ting. Er det smart fx at have en Create() og evt. en Destroy()-
funktion, som tager sig af at oprette/fjerne instansen, eller kan jeg nøjes
med bare at lade GetInstance[Ptr]() oprette den ved første kald?

Venlig hilsen
Christian Larsen

 
 
Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste