设为首页 加入收藏

TOP

C++指针直接调用类成员函数探讨
2014-11-19 13:43:21 】 浏览:2571
Tags:指针 直接 调用 成员 函数 探讨

  在编程工作中常会遇到在一个“类”中通过函数指针调用成员函数的要求,如,当在一个类中使用了C++标准库中的排序函数qsort时,因qsort参数需要一个“比较函数”指针,如果这个“类”使用某个成员函数作“比较函数”,就需要将这个成员函数的指针传给qsort供其调用。本文所讨论的用指针调用 “类”的成员函数包括以下三种情况:


  (1).将 “类”的成员函数指针赋予同类型非成员函数指针,如:


  例子1


  #include


  typedef void (*Function1)( ); //定义一个函数指针类型。


  Function1 f1;


  class Test1


  {


  public:


  //…被调用的成员函数。


  void Memberfun1( ){ printf("%s \n","Calling Test3::Memberfun2 OK");}; //


  void Memberfun2()


  {


  f1=reinterpret_cast (Memberfun1);//将成员函数指针赋予f1。编译出错。


  f1();


  }


  //…


  };


  int main()


  {


  Test1 t1;


  t1.Memberfun2();


  return 0;


  }


  (2) 在一个“类”内,有标准库函数,如qsort, 或其他全局函数,用函数指针调用类的成员函数。如:


  例子2:


  #include


  class Test2


  {


  private:


  int data[2];


  //…


  public:


  //…


  int __cdecl Compare(const void* elem1, const void* elem2) //成员函数。


  {


  printf("%s \n","Calling Test2::Memberfun OK");


  return *((int*)elem1)- *((int*)elem2) ;


  }


  void Memberfun()


  {


  data[0]=2; data[1]=5;


  qsort( data, 2, sizeof(int), Compare); //标准库函数调用成


  //员函数。编译出错。


  }


  //…


  };


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++读取文件seekg()无效的问题 下一篇C++中动态分配二维数组

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目