Bekomme leider folgende Fehlermeldung bei dem Listing
|
Quellcode
|
1
2
3
4
5
6
|
1>------ Erstellen gestartet: Projekt: 8_3_Templates_1, Konfiguration: Debug Win32 ------
1> Singleton.hpp
1>c:\cpp\8_3_templates_1\singleton.hpp(9): error C2143: Syntaxfehler: Es fehlt ';' vor '~'
1> c:\cpp\8_3_templates_1\singleton.hpp(25): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "TSingleton<T>".
1>c:\cpp\8_3_templates_1\singleton.hpp(9): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef TSINGLETON
#define TSINGLETON
template <class T>
class TSingleton{
protected:
static T *m_pSingleton;
public:
virtual ~TSingleton (){
}
inline static T* Get (){
if (!m_pSingleton)
m_pSingleton = new T;
return (m_pSingleton);
}
static void Del (){
if (m_pSingleton)
{
delete (m_pSingleton);
m_pSingleton = NULL;
}
}
};
template <class T>
T* TSingleton<T>::m_pSingleton = 0;
#endif
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// C++ für Spieleprogrammierer
// Listing 8.7
// Einsatz von Singletons
//
#include <iostream>
#include "Header.hpp"
using namespace std;
// Klassen
//
class CLogfile : public TSingleton<CLogfile>
{
public:
// Memberfunktionen
// Konstruktor
//
CLogfile ()
{
cout << "Neues Logfile wurde erstellt." << endl;
} // Konstruktor
// Destruktor
//
~CLogfile ()
{
cout << "Logfile wurde geschlossen." << endl;
} // Destruktor
// Pseudo-Funktion
void Statusmeldung ()
{
cout << "Status wird ins Logfile geschrieben\n";
} // Statusmeldung
};
// Eine beliebige Funktion
void Funktion ()
{
// Eine Statusmeldung ins Logfile schreiben
CLogfile::Get()->Statusmeldung ();
} // Funktion
// Hauptprogramm
//
int main ()
{
// Eine beliebige Funktion aufrufen
Funktion ();
// Logfile schließen
CLogfile::Del ();
cin.ignore();
return 0;
}
|
Ich versteh leider noch nicht was ich falsch mache.
Bitte um einen Hinweis
Okay, Kommando zurück - aus irgendeinen Grund funktioniert es auf einmal, obwohl ich nicht das geringste geändert habe...