请教如何能实现一个函数根据参数不同,调用不同的函数?好像指针函数可以做到。
但是如果这些函数的参数是不同类型的,或者这些函数的参数个数不同,如何用指针函数来实现?也就是如何把参数传递进去。
比如:
func1(int a,int b)
func2(int c, int d ,int e)
怎样实现:
func3(参数,(*fun)()   )
{
   if i==1
        func1(aa,bb);
   else
        func2(aaa,bbb,ccc);
}

解决方案 »

  1.   

    如果有简单的办法,MFC的消息映射也不需要那么多的宏定义了!!
    函数参数得自己去判断!!!
      

  2.   

    在用函数指针时出现以下错误:
    error C2440: “=” : 无法从“void (__thiscall  * )(void)”转换为“void (__cdecl *)(void)
    好像是成员函数指针与普通函数指针不同,无法转换.
    请教如何解决?
    谢谢!
      

  3.   

    void fun1(int a,int b)
    {
    printf("fun1");
    }void fun2(int a,int b,int c)
    {
    printf("fun2")
    }
    void fun3(char * format...)
    {
    //用 format 分析参数来调用不同的函数 
    }就是不定参,是你想到的吗
      

  4.   

    谢谢各位,大有收获。
    再请教:如果是要调用的两个不同函数,其参数类型
    func1(int a,int b)
    func2(int c, int d )
    怎样实现:
    func3(aa,bb(*fun)()   )
    {
       ...
       
            fun(aa,bb);
       
       ...
    }
    func3可以用两个函数实现,但用一个更简洁些,因为该函数大部分代码相同。这种想法是否合理?这些函数都在一个类里。
    这样可以用函数指针实现,但是调用时却会出现类成员函数指针无法转换为普通函数指针的错误提示:
    error C2440: '=' : cannot convert from 'int (__thiscall MyDoc::* )(int,int)' to 'int (__cdecl *)(int,int)'
    是否可以强制转换?
    在func4里调用:
    int(*oper)(int,int)
    if i=1
      oper=func1;
      func3(a,b,oper);
    else
      oper=func2;
      func3(a,b,oper);这些函数都在一个类里。请教如何解决或是否有更好思路?谢谢各位!
      

  5.   

    用上述函数func1,func2,func3 ,func4会出现错误,具体见上一楼。请教各位大虾,有什么办法可以解决?或者有别的更好的办法?
    请各位再帮帮忙!