Bonjour,
J'ai un petit problème avec un système d'événement. J'ai fait un bout de code comme ceci:
A la compilation, g++ me sort :
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 template <classname T> class EventListener { int getEvent(T& p_event); }; struct inputEvent { }; struct windowEvent { }; class Receiver::public EventListener<inputEvent>, public EventListener<windowEvent> { void update() { inputEvent e; while(getEvent(e)) { //Handle event } } }
error: reference to ‘getEvent’ is ambiguous
error: candidates are: unsigned int EventListener<T>::getEvent(T&) [with T = windowEvent]
error: unsigned int EventListener<T>::getEvent(T&) [with T = inputEvent]
Je comprend son problème, il a deux fonctions qui ont le même nom. Mais ce que je ne comprend pas, c'est que les deux fonctions ont des arguments différents, un prend une référence pour un inputEvent, l'autre pour un windowEvent, et il n'y a aucun lien d'héritage entre les deux. Je pensais que ca suffirait a lever toute ambiguïté.
J'ai réussi a lever l'ambiguïté en mettant des EventListener<inputEvent>::getEvent(), mais mon système d'événement est destiné a être utilisé par des collègues qui ne sont pas aussi a l'aise, et j'aimerais ne pas trop alourdir la syntaxe.
Existe t il une autre façon de lever l'ambiguïté qui soit moins lourde en syntaxe ? Est ce que c'est un bug de g++ ?
Partager