Giddion Skrevet 22. mars 2006 Del Skrevet 22. mars 2006 (endret) Jeg tenkte jeg skulle lage en template som skulle gjøre om klassene til singeltoner ved og stamme fra singelton templatet class klasse1: public Singelton <klasse1> { public: klasse1 (void); ~klasse1 (void); }; her er singelton template koden #ifndef SINGELTON_H #define SINGELTON_H #include "N_var.h" #pragma once template <typename T> class Singelton { public: static T* GetObj(void) { return m_pObj; }; static void SetObj(T* pObj) { m_pObj = pObj; }; static T* m_pObj; }; #endif jeg tror det har noe med at funsjonene er statiske, men jeg har lite erfaring med template så jeg er ikke sikker. probleme oppstår under kompileringen da den klager på at den ikke finner static klasse1* GetObj(void) alternative metoder å gjøre dette på motas også. på forhånd takk. Endret 22. mars 2006 av Giddion Lenke til kommentar
kjetil7 Skrevet 22. mars 2006 Del Skrevet 22. mars 2006 (endret) Du får nok en feil fra linkeren din vil jeg tro. Du får nok unresolved symbol eller noe lignende. Dette fordi du deklarer den statiske medlemsvariablen m_pObj, men definerer den aldri. Legg til følgende linje under template klassen din: template <class T> T* Singelton<T>::m_pObj; Det bør hjelpe. Når det kommer til logikken rundt singleton og hvordan de bør implementeres er det et stort og omdiskutert tema. Jeg har ikke tid til å gå nærmere inn pådet akkurat nå, men jeg kan i hvertfall anbefale en bok: http://www.amazon.com/gp/product/0201704315 Den går inn i dybden på forskjellige implementasjoner av singletons. Her er en av enkleste: class phoenix { phoenix() {} phoenix(const phoenix & ) { } phoenix & operator=(const phoenix &) {return *this; } ~phoenix() { }; public: static phoenix & instance() { static phoenix inst; return inst; } }; Tar forbehold om trykkleifer da jeg ikke har kompilert koden. Endret 22. mars 2006 av kjetil7 Lenke til kommentar
Giddion Skrevet 23. mars 2006 Forfatter Del Skrevet 23. mars 2006 Takker, nå funker det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå