将结构传递给方法,指示要使用的字段
Pass a structure to a method, indicate which field to use
class C
{
struct S
{
T a;
T2 b;
.
.
.
T z;
};
int compute(S s[]);
}
所以我需要这个compute()
方法来以两种方式(运行时可选(处理结构 S。
一种情况是根据
a
、b
和结构S
的其他内容来估计某物,不包括z
。其他时候我需要完全相同的计算,但取而代之的是
z
(和代替(a
.它们都是相同的类型,具有相同的含义。
结构S
在 API 中公开,因此需要完全存储在此布局中。
什么是有效的(compute()
经常被称为(结束优雅的解决方案? bool
参数? enum
参数?模板参数(如果是,如何实现(?
笔记:
-
compute()
是一个相当长的函数,选择a
或z
只发生一次
我会使用枚举。 它的效率不比 bool 高或低,但在调用站点可能更清楚:
compute(s, UseAB);
compute(s, UseZB);
而不是:
compute(s, false);
compute(s, true);
模板选项是可能的,但可能不是更好;您应该先尝试常规运行时方式。 如果您非常关心性能,请考虑将compute()
内联(如果它简短而简单(。
如果这是仅有的两种情况,我将只使用bool
参数。保持简单。并正确记录它。
或者你可以有两种方法 computeA(S s)
和 computeZ(S s)
.在这种情况下,这实际上是关于你对什么感到满意。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何避免在数据结构中包含存储为字段的类?
- 聚合初始化和删除的复制构造函数,也称为不可复制的 obejcts 作为字段
- 将结构传递给方法,指示要使用的字段