Bonjour,

Je suis entrain de mettre en place un ensemble de classes générique. Mais certaines fonctions doivent obligatoirement être surcharchés pour que le programme fonctionne correctement.
D'où l'utilisation de fonction virtuel pure.

Par contre, je viens de faire un test, j'ai créer une classe fille sans les fonctions virtuel pure et je n'ai AUCUNE erreur de compilation.

C'est pas normal !!! Le principe c'est justement d'avoir des erreurs. Non ?

Voici le code de la classe mère :
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
class CGraphObjCfg;
class CGraphObjContext;
 
class CGraphObj : public CObject  
{
public:
	// Constructeurs
	CGraphObj(CGraphObjContext * pContext);
	// Destructeur
	virtual ~CGraphObj() = 0;
 
 
	// Duplication
	// -----------	
		// Permet de copier les données de 'pSrc' vers l'objet courant
	virtual void Copy ( CGraphObj  * pSrc ) = 0;
		// Permet de créer un objet identique (classe & données) à l'objet courant
	virtual CGraphObj * Clone ( ) = 0;
 
protected:
 
	// Gestion de la configuration
	// ---------------------------
		// Ajout la configuration 'pConfig' dans la liste
	int AddConfig ( CGraphObjCfg * pConfig );
		// Permet de supprimer une configuration, sélectionnée par 'nIndex', de la liste
		// Elle peut, selon 'bDelete', supprimer la configuraiton de la mémoire
	BOOL RemoveConfig ( int nIndex, BOOL bDelete = TRUE );
		// Retourne la configuration sélectionné par 'nIndex'
	CGraphObjCfg * GetConfig ( int nIndex );
 
 
	// Contexte d'utilisation de l'objet courant
	CGraphObjContext *								m_pContext;
 
private:
	// Liste des configuraitons de l'objet courant
	CArray < CGraphObjCfg *, CGraphObjCfg * >		m_arpConfigs;
 
};
Et le code de la classe fille:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class CGraphObjContext;
 
class CGraphObjLabel : public CGraphObj  
{
public:
	// Constructeurs
	CGraphObjLabel(CGraphObjContext * pContext);
	// Destructeur
	virtual ~CGraphObjLabel();
 
};