根据条件运行特定版本的函数?

时间:2015-10-19 23:10:19

标签: c++

我不善于解释事情,所以我也会尽力而为。 在C ++中,无论如何要使某个函数的版本依赖于某个条件来运行吗?我知道如果我做虚函数,我可以做类似以下的事情:

virtual int thisFunction()

thisFunction(int, string)

thisFunction(int,int)

那只是来自记忆,但我想知道我是否能依靠某种条件做到这一点?例如。如果您有显示菜单的功能,请根据权限级别进行更改?只是if声明中没有的东西。

2 个答案:

答案 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]();