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