class C
{
struct S
{
T a;
T2 b;
.
.
.
T z;
};
int compute(S s[]);
}
所以我需要这个compute()
方法来处理两种方式的结构S(运行时可选)。
一种情况是根据a
,b
和结构S
的其他内容估算某些内容,不包括z
。
其他时候我需要完全相同的计算,但需要z
代替({1}}。a
。它们的类型相同,含义相同。
结构S
在API中公开,因此需要以这种布局存储。
什么是有效的(compute()
被称为常常)最终优雅的解决方案? bool
参数? enum
参数?模板参数(如果是,如何实现)?
注意:
compute()
功能相当长,选择a
或z
只发生一次答案 0 :(得分:1)
我会使用枚举。它不比bool更有效或更低效,但在呼叫站点可能更清楚:
compute(s, UseAB);
compute(s, UseZB);
而不是:
compute(s, false);
compute(s, true);
模板选项是可能的,但可能不会更好;你应该先尝试常规的运行方式。如果您非常关注性能,请考虑将compute()
内联,如果它简短而简单。
答案 1 :(得分:0)
如果只有两个案例,我会使用bool
参数。把事情简单化。并妥善记录。
或者您可以使用两种方法computeA(S s)
和computeZ(S s)
。在这种情况下,它实际上是关于你感到满意的。