【发布时间】:2016-08-12 19:43:48
【问题描述】:
可能是常见的,但在这里找不到任何现有主题。
所以我有一个带有许多成员的私有结构的类。我想为单个成员编写 getter 和 setter,但是为每个成员编写一个 getter/setter 会很长且重复...如何轻松通用?
class C {
public:
typedef struct S {
int a, b, c, d, e, f, g, h;
}S;
void setS(S new_struct);
S getS();
void setSElement(????, int value);
int getSElement(????);
private:
S data;
}
用什么来代替?????? with 直接引用我想要的 S 的哪个元素(a 到 h)?
不用说,我需要结构体保持结构体而不与我的其他班级成员混在一起,而且我还需要能够一次完全地获取/设置结构体。
提前致谢,
查尔斯
【问题讨论】:
-
也许并不总是,但如果你想要这样的东西,设计中通常会有问题。
-
为什么
S
是私有的,如果你为这个成员提供getter/setter 抛出C
? -
为什么不使用数组来代替,所以你为
????
提供索引。 -
1) 为什么 private + get/set :因为需要在 getter/setter 中进行大量检查和转换(检查值一致性,从度数转换为弧度,检查单位一致性和执行其他转换需要时...),但我不希望用户担心
-
2) 为什么不使用数组:因为我希望 S 的成员有明确的名称,它们都有非常不同的含义,而不仅仅是序列中的相似元素
标签: c++ struct private member getter-setter