Manipulation d'un nom de template dans une #define-macro - C++ - Programmation
Marsh Posté le 07-09-2008 à 21:06:13
tu veut faire quoi exactement. Parce que la deja v_v macro+globale, ca sent le sapin.
donc donne moi le details de ton truc.
Ton truc marchera jamais anyway
Marsh Posté le 07-09-2008 à 21:50:59
Par exemple, j'ai un template Model qui prend en parametre (de template) deux classes
Code :
|
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 :
|
Maintenant, je voudrais dans un template de classe MyTemplate accèder à cette variable globale :
Code :
|
Pour ainsi écrire simplement
Code :
|
Marsh Posté le 07-09-2008 à 21:56:58
oui mais non. Un paramètres template n'est aps un token d epreprocessing.
Utilise plutot des traits en faisant une table de correspondance entre ton A et ton Model de A.
Code :
|
Surcharge en suite model pour chaque type que tu connais.
Puis pour récupérer le model dans ta classe :
Code :
|
Mais ton schéma est zarb, et les globales c'ets la merde assurée.
C'est une abstract factory que tu veut faire ou bien ?
Marsh Posté le 07-09-2008 à 22:04:32
J'ai fait un peu de refactoring dernierement, et j'ai ainsi déplacer la variable statique dans Model :
Par exemple, j'ai un template Model qui prend en parametre (de template) deux classes
Code :
|
+ Spécialization de ce template pour chaque object, ainsi :
Code :
|
Je peux ainsi accèder à cette variable globale, en appellant Model<A,AType>::gpModel ... Mais j'ai encore besoin de concaténation pour "créer" le AType à partir de A :
Code :
|
Marsh Posté le 07-09-2008 à 22:07:45
ca reste moche
Marsh Posté le 07-09-2008 à 22:11:30
Oups, je viens de voir ta réponse ... En fait, à la base, je voulais garder un truc générique pour éviter d'obliger à faire un spécialization pour chaque objet ... Mais comme maintenant, j'ai commencé à spécializer autant aller jusqu'au bout ...
Je pense que je vais mixer ta proposition et ma refactoring pour avoir un truc du genre :
Code :
|
Marsh Posté le 07-09-2008 à 20:33:09
Voila, je voudrais accéder à une variable globale pré-définie (je sais que cette variable existe et suit un certain format). Donc du genre :
Maintenant, un peu plus dur, je voudrais utiliser cette macro dans un template
Et là,c'est le drame ...