我有一个名为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被更改或设置的任何时候运行方法?
答案 0 :(得分:1)
简短的回答是:几乎没有。您必须使maxOn
成为私有类成员,并提供自己的getter和setter方法。
"实际上"限定符是可以建立一个纸牌房子,这将形成一个表格的声明:
pointerToResourceBin->maxOn=true;
执行一个类方法。 maxOn
不是普通的bool
,而是自定义类,operator=
和operator bool()
,使其像bool
值一样,但operator=
将更新标志,并使用多种方法在其父类中执行方法以验证所需的约束。
这是可能的,这是相当多的工作。但不要这样做。这太丑了。只需用getter和setter替换maxOn
。