gpt4 book ai didi

c++ - C++类/结构中的函数相关属性

转载 作者:行者123 更新时间:2023-12-01 15:07:54 24 4
gpt4 key购买 nike

我想创建一个类/结构,其中一个属性在功能上依赖于其他属性。如何做到这一点?

struct Numbers {
int a;
int b;
int c; // c == a+b
}


Numbers n1 {1, 2, 3}; // Ok.
Numbers n2 {1, 2, 4}; // Error!

在我的用例中, a, b, c是常量,如果那很重要的话(因此可以使用 const int)。

所有属性将在class / struct方法中多次出现,因此目标是缓存 a+b值。以加法为例,依赖函数可能更复杂。

最佳答案

如果ab是可变的,那么您不能强制c保持同步;这三个都必须是const才能强制您执行此不变式。

最简单的方法是使c为函数:

struct Numbers {
int a;
int b;
int c() const { return a + b; }
}

如果要缓存 c的值而不是在需要时计算它的值,则还需要将 ab隐藏在访问器后面,以便可以在更新 c时对其进行更新。
class Numbers {
public:
Numbers(int a, int b) : ma{a}, mb{b} { updateC(); }

int a() const { return ma; }
int b() const { return mb; }
int c() const { return mc; }

void a(int v) { ma = v; updateC(); }
void b(int v) { mb = v; updateC(); }
// No setter for c

private:
void updateC() { mc = ma + mb; }

int ma;
int mb;
int mc;
};

关于c++ - C++类/结构中的函数相关属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61973725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com