#include<iostream.h>
class Dog
{
public:
void Speak()const{cout<<"Woof!"<<endl;}
void Move()const{cout<<"Walking to heel......"<<endl;}
void Eat()const{cout<<"Eating!"<<endl;}
void Grow()const{cout<<"Grrrr"<<endl;}
void Whimper()const{cout<<"Whining noise...."<<endl;}
void RollOver()const{cout<<"Rolling over...."<<endl;}
void PlayDead()const{cout<<"The end of Little Caesar...."<<endl;}
};
typedef void (Dog::*PDF)() const;/指向Dog类的不接受任何参数且没有返回值的const成员函数
int main()
{
const int MaxFuncs=7;
PDF DogFunctions[MaxFuncs]=
{Dog::Speak,
Dog::Move,
Dog::Eat,
Dog::Grow,
Dog::Whimper,
Dog::RollOver,
Dog::PlayDead
};
Dog *pDog=0;
int Method;
bool fQuit=false;
while(!fQuit)
{
cout<<"(0)Quit (1)Speak (2)Move (3)Eat (4)Growl";
cout<<"(5)Whimper (6)RollOver (7)PlayDead :";
cin>>Method;
if(Method<=0||Method>=8)
{
fQuit=true;
}
else
{
pDog=new Dog;
(pDog->*DogFunctions[Method-1])();//调用
delete pDog;
}
}
return 0;
}