Voilà le problème est dans le titre : le compilateur n'est pas content avec :

Singleton.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#ifndef SINGLETON_H
#define SINGLETON_H
 
#include <iostream>
 
using namespace std;
 
template <typename T> class Singleton
{
 
private:
  // Unique instance
  static T* _singleton;
 
protected:
  // Constructeur/destructeur
  Singleton ();
  ~Singleton ();
 
public:
  // Interface publique
  static T* getInstance ();
 
  static void kill ();
 
};
 
#endif
-------------------------------------------------
Et Singleton.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include "Singleton.h"
 
template <typename T> T* Singleton<T>::_singleton = NULL;
 
  // Constructeur/destructeur
Singleton::Singleton<T> () { }
Singleton::~Singleton () { }
 
  // Interface publique
static T* Singleton::getInstance ()
  {
    if (_singleton == NULL)
        _singleton = new T();
 
    return (static_cast<T*> (_singleton));
  }
 
static void Singleton::kill ()
  {
    if (NULL != _singleton)
      {
        delete (_singleton);
        _singleton = NULL;
      }
  }
-----------------------------------------------------
Je ne comprend pas les erreurs de compilation, help me please !

src/Singleton.cpp:7: erreur: «template<class T> class Singleton" used without template parameters
src/Singleton.cpp:7: erreur: expected constructor, destructor, or type conversion before «<" token
src/Singleton.cpp:8: erreur: expected constructor, destructor, or type conversion before «::" token
src/Singleton.cpp:11: erreur: expected initializer before «*" token
src/Singleton.cpp:19: erreur: «template<class T> class Singleton" used without template parameters
src/Singleton.cpp: In function «void kill()":
src/Singleton.cpp:21: erreur: «_singleton" was not declared in this scope
src/Singleton.cpp:23: erreur: type «<type error>" argument given to «delete", expected pointer




balises [code] ajoutées par r0d. Merci d'y penser la prochaine fois.