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

Running a specific version of a function dependent on condition?

本文关键字:版本 函数 条件 运行      更新时间:2023-10-16

我不擅长解释事情,所以我也要尽力而为。在C++中,是否有任何方法可以使函数的版本根据特定条件运行?我知道如果我做虚拟功能,我可以做如下事情:

virtual int thisFunction()
thisFunction(int, string)
thisFunction(int,int)

这只是凭记忆,但我想知道我是否可以根据某个条件做到这一点? 例如,如果您有显示菜单的功能,请根据权限级别进行更改?只是不在if声明中的东西。

我想到了两个好方法。

使用开关语句:

switch(permission)
{
    case 1: displayMenu1();break;
    case 2: displayMenu2();break;
    case 3: displayMenu3();break;
};

使用函数指针数组:

typedef void (*displayfunc)() ;
displayfunc displayfuncs[] =
{
    displayMenu1,
    displayMenu2,
    displayMenu3
};

用法:

 displayfuncs[permissions]();

如果不能在调用函数的方法中使用 if 语句或 case 语句,则可以将权限级别(或条件所依赖的任何其他值(作为参数传递给函数,并在函数中编写逻辑来处理任何权限级别。

您可以通过重载来处理不同的函数参数类型,只需像重载一样多次定义函数,唯一的变化是参数的类型。