Bonjour,
J'utilise un template avec une classe neccessitant obligatoirement un DECLARE_DYNACREATE
J'ai suivi les conseils de Frascape et modifiant le contenu de la macro DECLARE_DYNCREATE mais rien n'y fait. J'ai toujours des erreurs
Voici le code de la nouvelle macro :
Mais en l'utilisant comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #define IMPLEMENT_TEMPLATE_RUNTIMECLASS(TemplArg, class_name, base_class_name, wSchema, pfnNew) \ template <TemplArg> \ AFX_COMDAT const AFX_DATADEF CRuntimeClass class_name::class##class_name = { \ #class_name, sizeof(class class_name), wSchema, pfnNew, \ RUNTIME_CLASS(base_class_name), NULL }; \ template <TemplArg> \ CRuntimeClass* class_name::GetRuntimeClass() const \ { return RUNTIME_CLASS(class_name); } \ #define IMPLEMENT_TEMPLATE_DYNCREATE(TemplArg, class_name, base_class_name) \ template <TemplArg> \ CObject* PASCAL class_name::CreateObject() \ { return new class_name; } \ IMPLEMENT_TEMPLATE_RUNTIMECLASS(TemplArg, class_name, base_class_name, 0xFFFF, \ class_name::CreateObject)j'ai les erreurs suivantes que je ne comprend définitivement pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part IMPLEMENT_TEMPLATE_DYNCREATE (class T_GEFrameWnd, CGraphicEditorFrame<T_GEFrameWnd>, T_GEFrameWnd)
Je me suis même amusé à reprendre le code de macro pour les remettre dans mon code à moi. Et pareil mais je ne comprend pas le problème, dont voici le code après la conversion manuelle des instructions du preprocesseur.error C2143: syntax error : missing ';' before '<'
error C2059: syntax error : ';'
error C2143: syntax error : missing ';' before '<'
Donc si quelq'un avait une piste j'ai tout épuisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template <class T_GEFrameWnd> CRuntimeClass* CGraphicEditorFrame<T_GEFrameWnd>::GetRuntimeClass() const { return RUNTIME_CLASS(CGraphicEditorFrame<T_GEFrameWnd>); } template <class T_GEFrameWnd> AFX_COMDAT const AFX_DATADEF CRuntimeClass CGraphicEditorFrame<T_GEFrameWnd>::classCGraphicEditorFrame<T_GEFrameWnd> = { "CGraphicEditorFrame<T_GEFrameWnd>", sizeof(class CGraphicEditorFrame<T_GEFrameWnd>), wSchema, pfnNew, RUNTIME_CLASS(T_GEFrameWnd), NULL };
Merci d'avance
Partager