【发布时间】:2020-09-16 09:32:34
【问题描述】:
有什么方法可以在 c++ 中使用 switch 语句将参数传递给函数?我想要实现的是将一系列 if 语句变成一个 switch 语句。
举个例子,我想转这个:
if (function(a)) {
//code
}
if (function(b)) {
//code
}
if (function(c)) {
//code
}
进入这个:
switch (function(a/b/c)) {
case a:
//code
case b:
//code
case c:
//code
}
函数根据 a、b 或 c 是否处于活动状态返回 true 或 false。重要的是要注意 a、b 和 c 确实是常量,但函数本身将确定它们当前是否处于活动状态。我正在处理的问题是,当给函数提供要检查的键码时,当前是否按下了键。它看起来像这样:
if (isKeyPressed(Key::A)) {
//code
}
这是否可能,或者它是否从根本上破坏了 switch 语句?
【问题讨论】:
-
了解
function()实际做了什么、a/b/c是什么以及您的实际目标是什么真的很有帮助。一系列ifs,每次调用具有不同输入的函数与switch调用函数1次是根本不同的。 -
function能否为多个输入返回真值?如果是这样,应该执行每个匹配的块,还是只执行第一个? -
@KarlKnechtel 该函数可以为多个输入返回 true,并且所有结果为 true 的情况都应运行。
-
在这种情况下,您可能不会改进原始代码。您可以使用 for 循环重复运行该函数,但您希望对每个结果执行不同的操作,所以。
-
实际上,我想您可以构建一个结构,将
Key::A等符号映射到函数,并遍历该结构以检查是否按下了键,然后调用相应的函数。不过,C++ 肯定不会像其他一些语言那样简单。
标签: c++ function if-statement switch-statement