Bonjour à tous,
J'ai décidé d'utiliser les templates pour créer une classe super générique.
Mais j'ai un soucis au niveau de la compilation. Voici l'erreur
Je comprend bien le message d'erreur. Il faut que je mette un template <class TPL_VIEW>, mais le compilateur ne veux rien savoir.Compiling...
DockViewBar.cpp
D:\DEV_ROOT\Lib\ControlsLib\DockViewBar.cpp(31) : error C2955: 'CDockViewBar' : use of class template requires template argument list
d:\dev_root\lib\controlslib\dockviewbar.h(47) : see declaration of 'CDockViewBar'
D:\DEV_ROOT\Lib\ControlsLib\DockViewBar.cpp(31) : error C2955: 'CDockViewBar' : use of class template requires template argument list
d:\dev_root\lib\controlslib\dockviewbar.h(47) : see declaration of 'CDockViewBar'
Voici le code de ma petite classe:
DockViewBar.h
DockViewBar.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49 #if !defined(AFX_DOCKVIEWBAR_H__A00CEEA4_3F10_4794_A834_82C511FA6DC9__INCLUDED_) #define AFX_DOCKVIEWBAR_H__A00CEEA4_3F10_4794_A834_82C511FA6DC9__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // DockViewBar.h : header file // ///////////////////////////////////////////////////////////////////////////// // CDockViewBar window template <class TPL_VIEW> class CDockViewBar : public baseCDockViewBar { // Construction public: CDockViewBar(CCreateContext* pContext =NULL); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CPageSettingFieldsBar) //}}AFX_VIRTUAL // Implementation public: CCreateContext * GetCreateContext ( ); virtual ~CDockViewBar(); // Generated message map functions protected: TPL_VIEW * m_pView; CCreateContext * m_pContext; virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler); //{{AFX_MSG(CPageSettingFieldsBar) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #endif //AFX_DOCKVIEWBAR_H__A00CEEA4_3F10_4794_A834_82C511FA6DC9__INCLUDED_
A oui autre petit détails qui a son importance. L'erreur se produit sur le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 // DockViewBar.cpp : implementation file // #include "stdafx.h" #include "DockViewBar.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDockViewBar template <class TPL_VIEW> CDockViewBar<TPL_VIEW>::CDockViewBar(CCreateContext* pContext /* =NULL*/ ) { m_pContext = pContext; // Création de la vue en outrepassant le constructeur "protected" CRuntimeClass* pFactory = RUNTIME_CLASS(TPL_VIEW); m_pView = pFactory->CreateObject ( ); } template <class TPL_VIEW> CDockViewBar<TPL_VIEW>::~CDockViewBar() { } BEGIN_MESSAGE_MAP(CDockViewBar, baseCDockViewBar) //{{AFX_MSG_MAP(CDockViewBar) ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDockViewBar message handlers template <class TPL_VIEW> int CDockViewBar<TPL_VIEW>::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (baseCDockViewBar::OnCreate(lpCreateStruct) == -1) return -1; SetSCBStyle(GetSCBStyle() | SCBS_SIZECHILD); if (m_pView ) { m_pView->CreateView(this, m_pContext); } return 0; } template <class TPL_VIEW> void CDockViewBar<TPL_VIEW>::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) { pTarget->ShowControlBar(this,TRUE,FALSE); UNUSED_ALWAYS(bDisableIfNoHndler); }
BEGIN_MESSAGE_MAP(CDockViewBar, baseCDockViewBar)
Si vous aviez une petite idée, j'avoue que ça m'arrangerai
Merci d'avance
Partager