将结构传递给方法,指示要使用的字段

时间:2014-10-07 08:49:06

标签: c++

class C
{
    struct S
    {
        T a;
        T2 b;
        .
        .
        .
        T z;
    };

    int compute(S s[]);
}

所以我需要这个compute()方法来处理两种方式的结构S(运行时可选)。

  • 一种情况是根据ab和结构S的其他内容估算某些内容,不包括z

    < / LI>
  • 其他时候我需要完全相同的计算,但需要z代替({1}}。a。它们的类型相同,含义相同。

结构S在API中公开,因此需要以这种布局存储。

什么是有效的(compute()被称为常常)最终优雅的解决方案? bool参数? enum参数?模板参数(如果是,如何实现)?


注意:

  • compute()功能相当长,选择az只发生一次

2 个答案:

答案 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)。在这种情况下,它实际上是关于你感到满意的。