gpt4 book ai didi

c++ - 伪装成字段的类方法

转载 作者:行者123 更新时间:2023-11-28 05:30:34 25 4
gpt4 key购买 nike

我有一个名为 ResourceBin 的类。

class ResourceBin
{
public:
ResourceBin();
virtual ~ResourceBin();
int getResource(Resources resource) const;
void setResource(Resources resource, int amount);
int addResource(Resources resource, int amount);
unsigned int getMax(Resources resource) const;
void setMax(Resources resource, unsigned int amount);
bool simulateAddResource(Resources resource, int amount) const;
bool maxOn = true;
ResourceBin operator+(const ResourceBin& bin);
protected:
int resources[2];
unsigned int maxamount[2];
unsigned int getIndex(Resources resource) const;
private:
};

typedef ResourceBin ResourceList;

我想确保如果 MaxOn 等于 true 我的资源值(存储在资源中)都不大于它的最大数量。有什么方法可以使方法在更改或设置 maxOn 时随时运行?

最佳答案

简短的回答是:几乎没有。您必须使 maxOn 成为私有(private)类成员,并提供其自己的 getter 和 setter 方法。

“实际上”限定词的原因是可以 build 一个纸牌屋,这将导致以下形式的陈述:

pointerToResourceBin->maxOn=true;

执行类方法。 maxOn 不会是一个普通的 bool,而是一个自定义类,带有一个 operator= 和一个 operator bool(),使它像一个 bool 值一样工作,但是 operator= 会更新标志,并使用多种方法在其父类中执行一个方法来验证所需的约束。

这是可能的,而且需要大量的工作。但是不要那样做。它很丑。只需将 maxOn 替换为 getter 和 setter。

关于c++ - 伪装成字段的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651198/

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