Bonjour à tous,
Je découvre les joies du C++ dont ce soucis :
j'ai
-une classe Probe
-une classe MetaPacket
Probe contient un MetaPacket.
Le but est que quand j'appelle
il puisse parfois m'appeler des méthodes de probe, j'ai donc dans Probe les fonctions qui peuvent être appelées:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mon_meta_packet.push(word message);
et dans MetaPacket
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void onEach(word message); void onFinished(); void onAck(); void onConf(word message);
jusque là ok mais quand j'appelle le constructeur de MetaPacket dans probe :
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 void (*f_onEach)(word message); void (*f_onFinished)(); void (*f_onAck)(); void (*f_onConf)(word message); //le constructeur prend les pointeurs de fonction et les copies dans ses membres ... MetaPacket(void (*onEach)(word message), void (*onFinished)(), void (*onAck)(), void (*onConf)(word message)); //..pour les appeler dans push word push(word message) { //du code f_onAck(message); //encore du code }
J'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Probe::Probe() : m_meta(&Probe::onEach, &Probe::onFinished, &Probe::onAck, &Probe::onConf); { }
no matching function for call to ‘MetaPacket::MetaPacket(void (Probe::*)(word), void (Probe::*)(), void (Probe::*)(), void (Probe::*)(word))’
candidates are: MetaPacket::MetaPacket(void (*)(word), void (*)(), void (*)(), void (*)(word))
Il y a plusieurs probes donc je ne veux pas que les fonctions on* soient statiques, je souhaite juste que chaque push sur une sonde (sur son metapacket) puisse éventuellement appeler les fonctions on* sur cette même sonde.
J'ai essayé sans "&Probe::" qui me semblerait plus logique mais rien à faire, c'est un <unresolved overloaded function type> 0_o
Je suis preneur pour un petit eclaircissement, merci beaucoup !
Partager