『C++』Temp_2018_12_13 函数指针

 

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 
 6 class Test{
 7 private:
 8     string name;
 9 public:
10     string GetName(){
11         return name;
12     }
13     void SetName(string name){
14         this->name=name;
15     }
16 
17 };
18 
19 
20 
21 
22 int main(){
23     cout<<"----------------"<<endl;
24 
25     Test* t = new Test();
26 
27     //方案1  使用 auto, 不用 GetPtr 或 SetPtr 函数定义
28     //auto funcGet = &Test::GetName;
29     //auto funcSet = &Test::SetName;
30 
31     //(t->*funcSet)("张三");
32     //string name = (t->*funcGet)();
33     //cout<<name<<endl;
34 
35 
36 
37     //方案2  先定义两个 函数定义, 然后再调用这个函数定义
38     typedef string (Test::*GetPtr)();
39     typedef void (Test::*SetPtr)(string);
40 
41     GetPtr funcGet = &Test::GetName;
42     SetPtr funcSet = &Test::SetName;
43 
44     (t->*funcSet)("张三");
45     string name = (t->*funcGet)();
46     cout<<name<<endl;
47 
48 
49 
50 
51     cout<<"----------------"<<endl;
52     cin.get();
53 }

 

posted @ 2018-12-13 18:06  redc  阅读(116)  评论(0编辑  收藏  举报