Par exemple, j'ai un template Model qui prend en parametre (de template) deux classes
Code :
- template<class A, class B>
- class Model {
- A* Create() { new A(); }
- };
|
Je sais que pour toutes classe A, il existe :
- une classe AType
- un unique objet global défini ainsi : Model<A,AType>* gpAModel = new gpAModel<A,AType>();
J'ai ainsi défini :
Code :
- #define GET_MODEL(T) g##T##Model<T,T##Type>
|
Maintenant, je voudrais dans un template de classe MyTemplate accèder à cette variable globale :
Code :
- template<class C>
- class MyTemplate {
- C* Do() {
- return GET_MODEL(C)->Create();
- }
- };
|
Pour ainsi écrire simplement
Code :
- MyTemplate<A> var;
- A* pA = var->Do();
|
Message édité par Olivier51 le 07-09-2008 à 21:51:26