Bonjour,
Je suis entrain de décelopper une calculatrice en langage interpreté (qui permetra plus tard de génerer, pour cela je fonctionne avec une arboressance de noeuds.
Ceux ci peuvent être:
- Des nombres simples, ou une formule de dés (1d6, 2d4): ce sont les feuilles de mon arbre).
- Des Opérations (je me limites aux opérations basiques: +, -, * et /).
Pour les opérations, j'ai décidé, plutot que d'implémenter quattres classes filles), d'utiliser la généricité avec les diférents foncteurs de la stl.
Voici la classe mère abstraite (noeud de base), décrite dans le fichier aDiceNode.h:
Voici la classe dérivée décrite et implémentée dans le fichier cDiceOperationNode.inl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Lorsque je terste cela, j'obtiens ces erreurs de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Voila mon programe principal:Compiling: main.cpp
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:19: erreur: expected «;" before «aDiceNode"
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:31: erreur: declaration of «class Operation"
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:11: erreur: shadows template parm «class Operation"
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl: In member function «void DiceEngine::Calcul::cDiceOperationNode<Operation>::addChildren(DiceEngine::Calcul::aDiceNode*)":
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:28: erreur: expected `;' before «}" token
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl: In member function «void DiceEngine::Calcul::cDiceOperationNode<Operation>::process()":
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:35: erreur: «_cildren" was not declared in this scope
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:37: erreur: request for member «_value" in «i->", which is of non-class type «DiceEngine::Calcul::aDiceNode*"
/home/floreal/dev/DiceCaster/main.cpp: In function «int main()":
/home/floreal/dev/DiceCaster/main.cpp:34: erreur: cannot declare variable «node" to be of abstract type «DiceEngine::Calcul::cDiceOperationNode<std::plus<int> >"
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/cDiceOperationNode.inl:13: note: because the following virtual functions are pure within «DiceEngine::Calcul::cDiceOperationNode<std::plus<int> >":
/home/floreal/dev/DiceCaster/DiceEngine/Calcul/aDiceNode.h:55: note: virtual void DiceEngine::Calcul::aDiceNode::process()
Process terminated with status 1 (0 minutes, 0 seconds)
9 errors, 0 warnings
Je suppose que j'ai des lacunes concernant la généricité en C++, mais que puis-je faire pour règler ces problèmes?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

 

 
		
		 
        

 
			
			


 
			 
   


 Foncteur, classes templates et héritage
 Foncteur, classes templates et héritage
				 Répondre avec citation
  Répondre avec citation


 
  
 
 
			

 
			 
   
 
 
				 
						 A méditer: La solution la plus simple est toujours la moins compliquée
A méditer: La solution la plus simple est toujours la moins compliquée 
			
Partager