伪装成字段

时间:2016-09-23 01:28:49

标签: c++ c++11

我有一个名为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被更改或设置的任何时候运行方法?

1 个答案:

答案 0 :(得分:1)

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

"实际上"限定符是可以建立一个纸牌房子,这将形成一个表格的声明:

pointerToResourceBin->maxOn=true;

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

这是可能的,这是相当多的工作。但不要这样做。这太丑了。只需用getter和setter替换maxOn