Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Statische Eigenschaften

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.12.2006, 10:42 Uhr
pakat



Hallo,

ich habe hier folgende Klasse mit statischen Eigenschaften und Methoden:


C++:
class Test
{
static Test* _instance;
public:
    Test();
    virtual ~Test();
    
    static Test& instance() {
        return *_instance;
    }

    static void setInstance(Test& newInstance) {
        _instance = &newInstance;
    }
};



Wenn ich nun nun instance() oder setInstance() außerhalb benutze bekomme ich vom Linker die Fehlermeldung:

g++ -O0 -g3 -o ctest ctest.o Test.o
ctest.o: In function `Test::instance()':
Test.h:12: undefined reference to `Test::_instance'
ctest.o: In function `Test::setInstance(Test&':
Test.h:16: undefined reference to `Test::_instance'


Das gleiche gilt auch wenn ich die Methoden nicht inline setze.

Wie kann man die Eigenschaften deklarieren dass sie von statischen Methoden erreichbar sind?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.12.2006, 11:16 Uhr
Th



Du mußt noch eine Definition zu "static Test* _instance;" angeben, d.h. in der zugehörigen Source-Datei:

C++:
Test* Test::_instance;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.12.2006, 11:33 Uhr
pakat



Aha, klar, irgendwo muss der Speicherbereich reserviert werden.

Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.12.2006, 13:50 Uhr
stephanw
localhorst


Trotzdem sieht der Code komisch aus. Wenn das ein Singleton-Pattern sein soll, ist es falsch. Ansonsten sind Methoden wie instance() oder setInstance() zumindest ungewöhnlich.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.12.2006, 19:36 Uhr
pakat



Die eigentliche Klasse passt nicht ins Singleton-Muster. Naja, Singleton mit Austauschfähigkeit könnte man es nennen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: