arrayptrfunction.cpp

来自「《24学时精通c++》的光盘内容」· C++ 代码 · 共 53 行

CPP
53
字号
 //Listing 20.10 Array of pointers to member functions
 #include <iostream>

 class Dog
 {
 public:
     void Speak()const { std::cout << "Woof!\n"; }
     void Move() const { std::cout << "Walking to heel...\n"; }
     void Eat() const { std::cout << "Gobbling food...\n"; }
     void Growl() const { std::cout << "Grrrrr\n"; }
     void Whimper() const { std::cout << "Whining noises...\n"; }
     void RollOver() const { std::cout << "Rolling over...\n"; }
     void PlayDead() const
         { std::cout << "Is this the end of Little Caesar?\n"; }
 };

 typedef void (Dog::*PDF)()const ;
 int main()
 {
     const int MaxFuncs = 7;
     PDF DogFunctions[MaxFuncs] =
         {   Dog::Speak,
             Dog::Move,
             Dog::Eat,
             Dog::Growl,
             Dog::Whimper,
             Dog::RollOver,
             Dog::PlayDead
         };

     Dog* pDog =0;
     int Method;
     bool fQuit = false;

     while (!fQuit)
     {
         std::cout << "(0)Quit (1)Speak (2)Move (3)Eat (4)Growl";
         std::cout << " (5)Whimper (6)Roll Over (7)Play Dead: ";
         std::cin >> Method;
         if (Method == 0)
         {
             fQuit = true;
             break;
         }
         else
         {
             pDog = new Dog;
             (pDog->*DogFunctions[Method-1])();
             delete pDog;
         }
     }
     return 0;
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?