我不善于解释事情,所以我也会尽力而为。 在C ++中,无论如何要使某个函数的版本依赖于某个条件来运行吗?我知道如果我做虚函数,我可以做类似以下的事情:
virtual int thisFunction()
thisFunction(int, string)
thisFunction(int,int)
那只是来自记忆,但我想知道我是否能依靠某种条件做到这一点?例如。如果您有显示菜单的功能,请根据权限级别进行更改?只是if
声明中没有的东西。
答案 0 :(得分:0)
如果在调用函数的方法中不能使用if语句或case语句,则可以将权限级别(或条件所依赖的任何其他值)作为函数的参数传递,并在函数中写入逻辑处理任何权限级别。
你可以通过重载来处理不同的函数参数类型,你可以像你一样多次定义函数,唯一的变化就是参数的类型。
答案 1 :(得分:0)
想到两个好方法。
使用switch语句:
switch(permission)
{
case 1: displayMenu1();break;
case 2: displayMenu2();break;
case 3: displayMenu3();break;
};
使用函数指针数组:
typedef void (*displayfunc)() ;
displayfunc displayfuncs[] =
{
displayMenu1,
displayMenu2,
displayMenu3
};
用法:
displayfuncs[permissions]();