next up previous

C++ - Klassen: Vertiefung


Pointer auf Klassenmethoden: Beispiel (Implementation)

 
// File: PoToSMem.cc

#include <PoToSMem.h>

void Receiver::Receive1(int Arg) {
  cout << "Receiver Object at " << hex << unsigned(this) << dec
       << " received message \"Receive1\" and Arg " << Arg << endl;
}

void Receiver::Receive2(int Arg) {
  cout << "Receiver Class received message \"Receive2\" and Arg "
       << Arg << endl;
}

void sendO(Receiver& r, void (Receiver::* p)(int), int Arg) {
  (r.*p)(Arg);
}

#define sendC(Class, Ptr, Arg) (*Ptr)(Arg);

int main()
{
  void (Receiver::* Message1)(int) = &(Receiver::Receive1);
  void (*Message2)(int) = &(Receiver::Receive2);

  Receiver r1;

  sendO(r1, Message1, 111);
  sendC(Receiver, Message2, 222);

  return 0;
}


next up previous