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

解决 函数的对象

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

请教高手 解决 函数的对象
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);
 }//
 

热点排行