是否可以在不重载的情况下为每个函数设置可变数量的参数
Is it possible to have a variable number of parameters per function without overloading?
如果您希望能够在
1 到 3 个参数之间传递函数定义,是否可以使其不必重载 3 次?
例如,代替:
function(class a) { //this is called if only 1 class is passed
instance 1 = a;
}
function(class a, class b) { //this is called if 2 classes are passed
instance1 = a;
instance2 = b;
}
function(class a, class b, class c) { //this is called if 3 classes are passed
instance1 = a;
instance2 = b;
instance3 = c;
}
您可以拥有:
function(class a, <if2class>class b, <if3class>class c) //this is called
//for all passes
// <ifxclass> is not a real command, I'm using it for demonstration
{
instance1 = a; //always
instance2 = b; //if class b is passed
instance3 = c; //if class c is passed
}
对于函数调用...
function(first, second) //example of a function call with this code
编辑:实际用途的说明:
bossbattle(biglion, bigtiger);
bossbattle(biglion);
bossbattle(hades, biglion, biglion);
//where inside bossbattle it sets the classes passed in to temporary classes
//for battle. that's why I need a variable number of parameters
我已经为普通敌人创建了一个战斗系统,它调用了一个函数,根据随机普通敌人的分层百分比随机填充 1-3 个地点。我正在尝试使用相同的战斗系统,但功能不同(即 boss battle()
)用BOSS战填充战斗系统。临时敌人用于战斗的类实例位于一个名为 Enemy battlefield monsters[3]
的数组中,我在数组的每个实例中都有一个布尔isalive
,如果参数在bossbattle()
中调用,我希望将其设置为 true因此,例如,如果有 3 个参数传递到bossbattle()
则将有 3 个isalive = true
,但如果仅传递 1 个参数,则只有 1 个设置为 true。
使用默认参数来实现此目的。像这样:
void foo(int arg, int arg2 = 0, int arg3 = 0) {
...
}
它允许您调用 foo
并向其传递 1、2 或 3 个参数。
既然你已经提到了你的实际意图:即调用"bossbattle(hades, biglion, biglion);
bossbattle
内部设置传递到临时战斗职业的职业"。
如果这个bossbattle
受到(我们称之为)战斗参与者数量的限制(即总是有 1 到 3 个参与者),那么您可以使用上述方法。否则,定义一个类可能更合理,该类提取"hades","lion"和"tiger"的共同点来定义基类,假设class Creature
,并更改接口以取生物容器:
void bossbattle(const std::vector<Creature>& battleParticipants) {
...
}
相关文章:
- 获取和设置函数 c++
- 重载C++中的[]运算符以支持自定义设置函数
- 将函数更改为具有设置函数输入变量的方法的类
- 设置 c/c++ 函数调用的超时
- 有没有办法根据用户参数设置函数指针?
- cppUnit:针对多个测试方法执行一次的设置函数
- 在基类和派生类之间正确设置函数的返回
- 签入构造函数与设置函数
- 如何从另一个函数指针设置函数指针
- 如何在视觉工作室 2012年设置函数输入参数的颜色
- C++:初始化结构并设置函数指针
- 设置shared_ptr并设置函数计数
- 在 c++ 中设置函数不起作用
- 在结构中设置函数
- LLVM设置函数传递的问题-命名空间问题
- 右值引用和设置函数
- 获取和设置函数与引用函数
- 设置函数等于参数
- 由于某种原因,设置函数不起作用
- 在设置函数指针之前绑定参数