C 指针直接调用类成员函数探讨
2008-02-23 05:24:56来源:互联网 阅读 ()
关键词 C 编程; 类; 成员函数; 函数指针; 函数调用
在编程工作中常会碰到在一个“类”中通过函数指针调用成员函数的需要,如,当在一个类中使用了C 标准库中的排序函数qsort时,因qsort参数需要一个“比较函数”指针,假如这个“类”使用某个成员函数作“比较函数”,就需要将这个成员函数的指针传给qsort供其调用。本文所讨论的用指针调用 “类”的成员函数包括以下三种情况:
(1).将 “类”的成员函数指针赋予同类型非成员函数指针,如:
例子1
#include <stdlib.h> typedef void (*Function1)( ); //定义一个函数指针类型。 Function1 f1; class Test1 { public: //…被调用的成员函数。 void Memberfun1( ){ printf("%s \n","Calling Test3::Memberfun2 OK");}; // void Memberfun2() { f1=reinterpret_cast<Function1>(Memberfun1);//将成员函数指针赋予f1。编译出错。 f1(); } //… }; int main() { Test1 t1; t1.Memberfun2(); return 0; } |
(2) 在一个“类”内,有标准库函数,如qsort, 或其他全局函数,用函数指针调用类的成员函数。如:
例子2:
#include <stdlib.h> 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); //标准库函数调用成 //员函数。编译出错。 } //… }; int main( ) { Test2 t2; t2.Memberfun(); //调用成员函数。 return 0; } |
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 泛型编程系列讲座之实施
下一篇: C 编程中的四个调试小技巧
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash