pointeurs de fonctions membres
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
Code:
1 2
|
mon_meta_packet.push(word message); |
il puisse parfois m'appeler des méthodes de probe, j'ai donc dans Probe les fonctions qui peuvent être appelées:
Code:
1 2 3 4 5
|
void onEach(word message);
void onFinished();
void onAck();
void onConf(word message); |
et dans MetaPacket
Code:
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
} |
jusque là ok mais quand j'appelle le constructeur de MetaPacket dans probe :
Code:
1 2 3 4
|
Probe::Probe() : m_meta(&Probe::onEach, &Probe::onFinished, &Probe::onAck, &Probe::onConf);
{
} |
J'ai l'erreur suivante :
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 !