problème C++1x et <functional>
Bonjours !...
Je bloque sur un code C++1x pourtant très bête, et sur une erreur de compilation incompréhensible :
Code:
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;
} |
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:
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 === |
En revanche en utilisant les pointeurs de fonctions classiques, ça fonctionne :
Code:
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;
} |
je ne comprend pas le rapport entre l'utilisation des functional et le message de l'erreur 8O
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 ??