【发布时间】:2020-01-09 16:04:28
【问题描述】:
我正在研究光线追踪器,并且正在尝试实现采样。现在我有一个代表采样类型的枚举,为了简单起见,我们称它们为“一”、“二”、“三”。现在“一”和“二”是相互独立的,但如果某些东西需要“三”类型的采样,那么“一”和“二”的代码都需要运行。现在我正在这样做:
bool flag = false;
switch(type) {
case Three: flag = true;
case One:
// ...
if(!flag) break;
case Two:
// ...
break;
}
在没有布尔值的情况下,是否有一种“偷偷摸摸”的方式?我可以考虑将“一”和“二”的代码放入单独的函数中,并在“三”的情况下调用两者,但我不希望在那里调用函数,因为这被称为>很多
【问题讨论】:
-
另外,如果您能为这个问题想出一个更好的名称,请随时编辑它(我不能)
-
if (type==One || type==Three) { ... } if (type==Two || type==Three) { ... }是可能的。 -
为什么不只是
if (type == one || type == three) { ... } if (type == two || type == three) { ... }? -
switch 语句在 case 自然地按顺序执行(或总是中断)时是好的,如果不是这样,那么就不要使用 switch 语句。恕我直言,国旗相当老套
-
我喜欢它复杂的@NathanOliver,不,我太专注于已经实现的开关,我完全忽略了这个选项 xD
标签: c++ switch-statement