A
So..., ich habe mich nun mal etwas mit den Singletons auseinandergesetzt, so wie du es mir vorgeschlagen hast. Hier erstmal meine Singleton-Klasse:
#ifndef TSINGLETON
#define TSINGLETON
template <class T>
class TSingleton
{
protected:
// Membervariablen
static T *m_pSingleton; // statisches Objekt
public:
// Destruktor
virtual ~TSingleton(void)
{
}
// Get
// Wenn nötig, statisches Objekt erzeugen und
// Zeiger darauf zurückgeben
inline static T* Get(void)
{
// Existiert schon eine Instanz
if(!m_pSingleton)
m_pSingleton = new T; // Nein, dann neue Instanz erzeugen
// Zeiger auf die Instanz zurückgegeben
return m_pSingleton;
}
static void Del(void)
{
// gab es eine Instanz?
if(m_pSingleton)
{
delete m_pSingleton; // Ja, dann freigeben
m_pSingleton = NULL; // und Zeiger auf NULL setzen
}
}
};
// Die statische Variable erzeugen
template <class T>
T* TSingleton<T>::m_pSingleton = NULL;
#endif
Meine CPlayer-Klasse erbt die Attribute der Singleton-Klasse:
class CPlayer : public TSingleton<CPlayer>
Wenn ich einen Wert in meine Klasse schreiben möchte, dann mache ich das wie folgt:
CPlayer::Get()->setName(txtName->Text);
Und wenn ich den Wert ausgeben möchte, dann muss ich das so machen:
lblName->Caption = CPlayer::Get()->getName();
Ich erhalte erstmal keine Fehlermeldungen um die Ohren geschmießen, worüber ich schonmal sehr froh bin aber es gibt noch ein kleines Problem hinter das ich noch nicht gestiegen bin. Wenn ich die Daten auf dem selben Formular ausgebe, auf dem ich diese auch eingegeben habe, funktioniert alles wunderbar. Wenn ich diese aber auf einem anderem Formular ausgeben möchte bekomme ich auch keine Fehlermeldung, aber die Daten werden nicht angezeigt und da liegt mein Problem.
Könntet ihr mir sagen, wie ich dieses Problem noch umgehen kann? Wäre nett. Danke schonmal...
MfG Apo