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

C++ 根据条件运行特定版本的函数?,c++,C++,我不擅长解释,所以我也会尽我最大的努力。 在C++中,无论如何都有一个函数的版本依赖于某个条件来运行吗?我明白,如果我使用虚拟函数,我可以执行以下操作: virtual int thisFunction() thisFunction(int, string) thisFunction(int,int) 这只是记忆,但我想知道我是否可以根据特定的条件来做这件事?例如,如果您具有显示菜单的功能,是否根据权限级别进行更改?如果在调用函数的方法中不能使用if语句或case语句,则可以将权限级别(或

我不擅长解释,所以我也会尽我最大的努力。 在C++中,无论如何都有一个函数的版本依赖于某个条件来运行吗?我明白,如果我使用虚拟函数,我可以执行以下操作:

virtual int thisFunction()

thisFunction(int, string)

thisFunction(int,int)

这只是记忆,但我想知道我是否可以根据特定的条件来做这件事?例如,如果您具有显示菜单的功能,是否根据权限级别进行更改?如果在调用函数的方法中不能使用if语句或case语句,则可以将权限级别(或条件依赖的任何其他值)作为参数传递给函数,并在函数中写入逻辑,以处理任何权限级别


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

想到两种好方法

使用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]();

为什么不是一个if声明?我可以,只是看起来更混乱。这只是好奇,因为写一些东西,比如:displayMenu()看起来比if(permission==1)displayMenu1好,如果(permission==2)displayMenu2()不是
if
<代码>开关正常吗?但说真的,
if
开关可能是最好的方法。然后,考虑函数指针数组。那么您的代码看起来像是
displayfuncs[permission](参数)
@TheHowe:那么制作另一个函数
displayMenu(int)
,其中包含
if
语句?