下面是例子,如果对C的函数指针有一定体会的话,相信这个例子很容易就看明白了。(其实是一样的。)
#include <iostream>
#include <string>
using namespace std;
class CPerson;
typedef void (CPerson::*PF)(const CPerson&);
class CPerson
{
private:
string name;
public:
CPerson(const string& name);
void Slap(const CPerson& p);
void Kick(const CPerson& p);
};
CPerson::CPerson(const string& name)
{
this->name = name;
}
void CPerson::Slap(const CPerson& p)
{
cout << this->name << " slap " << p.name << endl;
}
void CPerson::Kick(const CPerson& p)
{
cout << this->name << " kick " << p.name << endl;
}
int main()
{
CPerson me("Cooleaf");
CPerson you("dummy");
int i = 0;
PF p[2];
p[0] = CPerson::Slap;
p[1] = CPerson::Kick;
cin >> i;
while (i != -1)
{
if (i > 1)
{
i = 1;
}
if (i < 0)
{
i = 0;
}
(me.*p[i])(you);
cin >> i;
}
system("pause");
return 0;
}