Bonjour,
Les explications sont plus bas, le code qui pose problème est là
J'essaie d'appeler, dans la classe A, une méthode de son paramètre template. Cette méthode a aussi un paramètre template. Alors je compile tout ça, et là mon compilateur m'insulte (g++ 4.0.3) :
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 #include <iostream> enum enum_type { val_zero = 0, val_one, val_two, val_twenty_four = 24 }; /*------------------------------------------------------------*/ class workaround { public: template<enum_type Val> unsigned int get() { return Val; } }; // class workaround /*------------------------------------------------------------*/ template<class Method> class A { public: void f() { Method m; std::cout << m.get<val_zero>() << std::endl; /* ligne 27 */ } }; // class A int main() { A<workaround> a; a.f(); }
J'imagine que j'ai un problème de syntaxe, mais je n'arrive pas à mettre la main dessus. Est-ce plus clair pour vous ?test_virt_temp.cpp: In member function «void A<Method>::f()»:
test_virt_temp.cpp:27: erreur: expected primary-expression before «)» token
test_virt_temp.cpp: In member function «void A<Method>::f() [with Method = workaround]»:
test_virt_temp.cpp:64: instantiated from here
test_virt_temp.cpp:27: erreur: no match for «operator<<» in «std::cout << m.workaround::get»
Merci
Partager