2012年7月23日 星期一

類別成員指標

可分為 Pointer to member function 和 Pointer to member data,以下是簡單的整理

#include <iostream>

using namespace std;

struct Data{
  int v;
  Data( int _v)
  {
    v = _v;
  }

  void Fun(int _v)
  {
    v = _v;
  }
};

int main()
{
  Data data(1);
  Data *pdata = new Data(2);

  // 宣告成員指標
  void (Data::*pmfn)(int) = &Data::Fun;
  int Data::*pmd = &Data::v;

  // 使用成員函數指標
  (data.*pmfn)(3);
  (pdata->*pmfn)(4);

  // 使用成員資料指標
  data.*pmd = 5;
  pdata->*pmd = 6;

  cout << "data: " << data.v << endl
       << "pdata: " << pdata->v << endl;

  return 0;
}





沒有留言:

張貼留言