首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 的一个重载有关问题

2012-09-17 
C++ 的一个重载问题!我这有三个c的函数,我想把他们封装成c++的结构,封装成一个类,但是调用关系上出现了一

C++ 的一个重载问题!
我这有三个c的函数,我想把他们封装成c++的结构,封装成一个类,但是调用关系上出现了一些问题,请各位帮忙看一下,我应该怎么封装,怎么调用.

C/C++ code
typedef int (* e)(int h);class a{public int b(int i); int c(int i); int d(int g, e f);};int a::b(int i){ return i;}int a::c(int i){ return i;}int a::d(int g, e f){ return f(g);}int main(void){ class a j; int i; class a *k = &j; i = k->d(5, k->c); return 0;}


[解决办法]
http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html

此外,public后面少个:
[解决办法]
下面这个方法不是最好的方法,但比较简单,容易看懂
C/C++ code
typedef int (_stdcall * e)(int h);  //调用约定 _stdcallclass a{public:    int b(int i);    static  int _stdcall c(int i);调用约定 _stdcall    int d(int g, e f);};int a::b(int i){    return i;}int a::c(int i){    return i;}int a::d(int g, e f){    return f(g);}int main(void){    a j;    int i;    a *k = &j;    i = k->d(5, &a::c);    return 0;}
[解决办法]
楼主首先要明白为什么要进行封装。像示例的这种情况,根本没有封装的必要。如果楼主是想将这些函数作为一个工具集来实用,放在同一个命名空间下即可。

如果楼主非要通过类来封装功能函数:单纯地封装功能函数作为一个工具集合类的话,建议将函数都作为静态函数进行封装。如下面示例:
C/C++ code
class Toolkit{    typedef int (*PFunc)(int h);public:    static int func1(int i);    static int func2(int i);    static int func3(int i, PFunc pf);};int Toolkit::func1(int i){    return i;}int Toolkit::func2(int i){    return i;}int Toolkit::func3(int i, PFunc pf){    return pf(i);}int main(void){    Toolkit::func1(2);    Toolkit::func2(3);    Toolkit::func3(5, Toolkit::func2);        return 0;} 

热点排行