我正在使用raytracer,正在尝试实施采样。现在,我有一个代表采样类型的枚举,为简单起见,我们将其称为“一个”,“两个”,“三个”。现在,“一个”和“两个”彼此独立,但是如果某些东西需要采样“三个”类型,则需要运行“一个”和“两个”的代码。现在我正在这样做:
bool flag = false;
switch(type) {
case Three: flag = true;
case One:
// ...
if(!flag) break;
case Two:
// ...
break;
}
在没有布尔值的情况下是否有一种'鬼s的'方法?我可以考虑将“一个”和“第二”的代码放入单独的函数中,并在“三个”的情况下都调用,但是我不希望在那里调用函数,因为它被称为“很多”。内联函数是另一种选择,但这会导致代码重复。
我太专注于尝试使其作为开关工作,但正如@NathanOliver指出的那样,它很简单
if(type==One || type == Three) {
// case Three
}
if(type==Two || type == Three) {
// case Two
}