Bonjour je suis toujours en période d'apprentissage.
Après plusieurs recherches je ne comprend pas pk je ne peu pas compiler le programme .
Je compile sur ubuntu avec g++.
je met juste la partie clé qui bug.
J'ajoute que je ne met pas la forme de coplien car il n'y a pas d'allocation mémoire.
class A
class B qui hérite de B
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 #ifndef DEF_A #define DEF_A #include "iostream" #include "C.h" #include <cstdlib> #include <ctime> using namespace std; template <typename T> class A<T>{ private : T valeur; public : ///////////////////////////////////////////////////////// A(){ srand(time(NULL)); valeur=(T) ((rand() % (1000 - 1 + 1)) + 1)/10; } ///////////////////////////////////////////////////////// void vue(){ cout << "class A " <<valeur << endl; } ///////////////////////////////////////////////////////// template <typename T2> void vue2(T2 u ){ cout << (T2)valeur << endl; } ///////////////////////////////////////////////////////// }; #endif
l'erreur de compilation je le met juste pour les curieux
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 #ifndef DEF_C #define DEF_C #include "iostream" //#include "B.h" #include "A.h" #include <cstdlib> #include <ctime> using namespace std; template <typename T> class C : public A <T> { protected : T valeurC; public : ///////////////////////////////////////////////////////// C(){ srand(time(NULL)); valeurC=(T)((rand() % (1000 - 1 + 1)) + 1)/25; } ///////////////////////////////////////////////////////// void vue(){ cout << "class C " <<valeur << " : "<< valeurC <<endl; } ///////////////////////////////////////////////////////// template <typename T2> void vue2(T2 u ){ cout << (T2)valeur << endl; } ///////////////////////////////////////////////////////// }; #endif
je trouve sa bizare qu'il ne veu pas compiler car la syntaxe a l'air bonne.
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 In file included from A.h:4: C.h:10: error: expected template-name before < token C.h:10: error: expected { before < token C.h:10: error: expected unqualified-id before < token A.h:9: error: A is not a template In file included from C.h:5: A.h:9: error: A is not a template C.h: In member function void C<T>::vue(): C.h:21: error: valeur was not declared in this scope C.h: In member function void C<T>::vue2(T2): C.h:25: error: valeur was not declared in this scope In file included from A.h:4, from T4.c++:2: C.h:10: error: expected template-name before < token C.h:10: error: expected { before < token C.h:10: error: expected unqualified-id before < token In file included from T4.c++:2: A.h:9: error: A is not a template
J'ajoute aussi que je devrais mettre A<T>::valeur pour la class B ,mais je ne pense pas que l'erreur viens de la.
-------------------------------------------------------------------------------------------------------------------------------
Pour les curieux dans:
template <typename T2> void vue2(T2 u ){
cout << (T2)valeur << endl;
}
"u" ne sert juste que à forcer le type voulu à l'affichage,car je n'ai pas trouvé d'autre façon pour le faire.
--------------------------------------------------------------------------
Au passage ,je me suis trompé ,je voulai posté dans C++/débutant
Partager