读书人

解决 函数的对象

发布时间: 2013-01-04 10:04:17 作者: rapoo

请教高手 解决 函数的对象
class A
{
void cmd(函数和参数列表) //这里我该怎么做?
{
//做一些东西
call 函数;
}

void fun1(int a){};
void fun2(int a,int b){};

}

void main()
{
A a;
a.cmd(A::fun1,3); //我要调用fun1
a.cmd(A::fun2,3,5);// 我要调用fun2

}
[解决办法]
class A
{
public:

void something()
{//做一些东西
};
void fun1(int a){};
void fun2(int a,int b){};
void cmd(int a) //这里我该怎么做?
{
something();
fun1(a);
}

void cmd(int a,int b) //这里我该怎么做?
{
something();
fun2(a,b);
}



};

int main()
{
A a;
a.cmd(3); //我要调用fun1
a.cmd(3,5);// 我要调用fun2
return 0;
}

稍微变通一下,也可以解决问题,当然也可以通过可变参数加函数指针来解决,不够麻烦一些。
[解决办法]
template<class T>
void cmd(T) ;

[解决办法]
我想要用的函数指针和重载吧

首先加个public好调用。

其次重载cmd定义

typedef void (*func)(int) Func1;
typedef void (*func)(int, int) Func2;

void cmd(Func1, int);
void cmd(Func2, int, int);
=====================================================================

还可以用arg参数...来实现。
楼下大神补充
[解决办法]


[解决办法]


struct VAL{int a,b};
void fun1(const VAL* val){};
void fun2(const VAL* val){};

typedef void (*F)(const VAL*);

void cmd(F f,const VAL* val,int key=0)
{
(*f)(val);
}



[解决办法]
void cmd(F f,const VAL* val)
{
(*f)(val);
}

[解决办法]
引用:
C/C++ code?12345678910struct VAL{int a,b};void fun1(const VAL* val){};void fun2(const VAL* val){}; typedef void (*F)(const VAL*); void cmd(F f,const VAL* val,int key=0){ (*f)(val); }

若被调用的函数是固定的,是否可以这样:

void cmd(const VAL* val,int key=0)
{ if(key) fun1(val);
else fun2(val);
}//

读书人网 >C++

热点推荐