Déclaration anticipée d'une classe template
Bonjour(soir) à tous
Voici les données de mon problème:
J'ai 2 fichiers : Singleton.h et MemoryManager.h
Dans le premier, il y a une classe template Singleton, et dans le 2eme, une classe MemoryManager, qui est une classe fille de la classe Singleton
Et mon but est de pouvoir utiliser les nouveaux opérateurs new et delete dans mon Singleton.
Voici le code (je vise à créer une DLL) :
Code:
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
|
// Singleton.h
#ifndef SINGLETON_H_INCLUDED
#define SINGLETON_H_INCLUDED
#include <iostream>
#ifndef DLL_EXPORT
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#endif
template<class Type>
class DLL_EXPORT Singleton{
public:
static Type* instance();
static void destroy();
protected:
Singleton();
static Type* m_instance;
virtual void creerInstance() = 0;
private:
};
//MemoryManager.h
#ifndef MEMORYMANAGER_H_INCLUDED
#define MEMORYMANAGER_H_INCLUDED
#ifndef DLL_EXPORT
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#endif
class DLL_EXPORT MemoryManager : public Singleton<MemoryManager> {
//... |
J'ai pensé à faire une déclaration anticipée de a classe Singleton, mais je n'arrive pas à faire une déclaration anticipée d'une classe template... faut-il passer par des typedef ? Ma solution est-elle vraiment bonne?
Merci d'avance