Bonjours !...
Je bloque sur un code C++1x pourtant très bête, et sur une erreur de compilation incompréhensible :
j'ai largement éclairci le code je pense qu'il s'explique de lui-même. Comme vous pouvez le voir j'utilise les functional qui sont la partie C++1x du code. Ce code plante avec cette erreur:
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 #include <functional> using namespace std; class Event { public: Event & operator += (function < void (const Event &) > &_trigger) { ; } }; void onClick (const Event &e) { ; } int main () { Event e; e += onClick; }
En revanche en utilisant les pointeurs de fonctions classiques, ça fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 In function int main(): 21: error: no match for operator+= in e += onClick 7: note: candidates are: void Event::operator+=(std::function<void(const Event&)>&) === Build finished: 1 errors, 0 warnings ===
je ne comprend pas le rapport entre l'utilisation des functional et le message de l'erreur
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 #include <functional> using namespace std; class Event { public: void operator += (void(* _trigger) (const Event &)) { ; } }; void onClick (const Event &e) { ; } int main () { Event e; e += onClick; }
Mon but est évidemment d'utiliser les functional et non pas de rester sur les pointeurs de fonction classiques ! Qu'est ce que je dois corriger pour que mon code compile ??
Partager