请教如何能实现一个函数根据参数不同,调用不同的函数?好像指针函数可以做到。
但是如果这些函数的参数是不同类型的,或者这些函数的参数个数不同,如何用指针函数来实现?也就是如何把参数传递进去。
比如:
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);
}
但是如果这些函数的参数是不同类型的,或者这些函数的参数个数不同,如何用指针函数来实现?也就是如何把参数传递进去。
比如:
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);
}
函数参数得自己去判断!!!
error C2440: “=” : 无法从“void (__thiscall * )(void)”转换为“void (__cdecl *)(void)
好像是成员函数指针与普通函数指针不同,无法转换.
请教如何解决?
谢谢!
{
printf("fun1");
}void fun2(int a,int b,int c)
{
printf("fun2")
}
void fun3(char * format...)
{
//用 format 分析参数来调用不同的函数
}就是不定参,是你想到的吗
再请教:如果是要调用的两个不同函数,其参数类型
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);这些函数都在一个类里。请教如何解决或是否有更好思路?谢谢各位!
请各位再帮帮忙!