|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre éprouvé
![]() Inscription : août 2006 Messages : 599 ![]() |
Bonjour,
Je me trouve dans une situation un peu tordue, que j'essaye de schématiser ci-dessous. En gros, des objets de classes templatisées doivent être créés par une abstract factory... du coup, il y aurait besoin d'écrire quelque chose comme : Code :
FACTORY<AbstractComportement,line>::Instance()->GetObject(comp); Code :
DECLARE_COMPORTEMENT(Comportement,"mot_clef"); Code :
Ci-dessous, la situationsous forme un peu plus codée... Toute aide serait la bienvenue !! Merci tout plein :-) Marc Code :
Code :
|
||||||
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Je ne comprend pas trop l'intérêt de la macro. Est-ce que des fonctions/classes templates ne suffisent pas?
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Inscription : août 2006 Messages : 599 ![]() |
Bonjour,
Merci pour ta question. Je ne saurais pas l'écrire avec des template, je dois dire... Mais mon inquiétude est surtout la faisabilité d'un tel schéma, et si c'est faaisable, comment rendre les choses maintenables, par exempleà la création d'un nouveau type line, comment déclarer les nouvelles factory, etc... ? Marc |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Bonjour,
J'ai un peu du mal à comprendre ce que tu veux faire. Si je comprend bien, tu as une factory donc le comportement est défini par un paramètre template "Comportement" (en gros un design pattern stratégie) et avec comme second paramètre template line dont on ne sait pas trop ce qu'il fait (mais cela ne semble pas très important). Ensuite, tu as une macro DECLARE_COMPORTEMENT dont je ne comprend vraiment pas à quoi elle sert : tu peux avoir deux fonctions de même signature dans un même namespace, je serais d'ailleurs étonné si ça compile correctement. Pour faire l'équivalent de ta macro : Code :
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon. Chaîne Youtube : Vidéos Ma page DVP : http://neckara.developpez.com/ |
||
|
|
00
|
|
|
#5 | ||
|
Membre éprouvé
![]() Inscription : août 2006 Messages : 599 ![]() |
Bonjour,
Merci pour ta réponse, et désole pour l'extrême lenteur des miennes : horaires un peu variables ces temps-ci... Bref. Ici, la macro sert à s'enregistrer auprès de l'abstract factory, qui est construite sur le modèle d'Alexandrescu dans modern C++ design. Un peu plus de contexte, peut-être... Il s'agit d'un code de modélisation de lignes, qui peuvent être de différents types. Les types sont définis pour des zones spatiales données (appelées graph, sans relation avec les autres types de graphes...), et sont des templates de ligne. Le type de graph est assigné à la lecture du fichier de mise en donnée, c'est en gros un conteneur un peu savant. Et le procédé est assez atroce : Code :
À présent, nous avons besoin de définir des comportements différents suivant de nouveaux mot-clefs pour les algorithmes de résolution, qui vont devoir aussi être dépendants du type de Line et d'un mot clef dans la mise en donnée, du coup, il y aurait besoin d'une factory capable de lier les mots-clefs du type ligne et les mots clefs définissant les algorithmes choisis. J'aimerais pouvoir écrire quelque chose comme ça : Code :
Factory<LineType>::GetFactoryInstance().GetAlgorithm("algoKeywords") Code :
Factory<Algorithm>::GetFactoryInstance().GetAlgorithm("algoKeywords","lineKeyword") Merci pour toute suggestion !! Marc |
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com