因此,我花了一些时间考虑这个问题,并在整个Google上寻找“解决方案”(解决方案很可能是偏好问题,但是我不确定)。以下是我遇到的问题,但是该问题可以应用于很多有关构图的情况。

我有一个颜色类,其中包含红色,绿色,蓝色和Alpha的成员。每个都有一个set和get成员函数。很简单。

class Colour
{
    public:
        float getRed();
        void setRed(float);
        float getGreen();
        void setGreen(float);
        ...
    private:
        float red;
        float green;
        ...
};

我将在其他类中使用该类来规定其颜色,例如(为简洁起见,省略了构造函数和析构函数):
class ColourableObject
{
    private:
        Colour colour;
};

现在我的问题是:这个ColourableObject类将如何最好地访问此Color对象?最好重新获取Color对象以直接访问其成员函数,如下所示:
class ColourableObject
{
    public:
        Colour& getColour();
    private:
        Colour colour;
};

或者,最好给ColourableObject类提供自己的集合并获取colour函数,其中对Color对象起作用,如下所示:
class ColourableObject
{
    public:
        float getRed();
        void setRed(float);
        ...
    private:
        Colour colour;
};

对我而言,前者是最合乎逻辑的,因为通过直接对这个Color对象进行操作,它将为每个需要该Color对象的类添加功能省去了很多麻烦。

但是,后者不是更容易受到ColourableObject类的更改的影响吗?更不用说colourableObject.getColour()。setRed(x)对我来说似乎不太自然,因为get和set相互冲突。

我可能完全采用了错误的方法。我是C++的新手,所以我愿意学习!所以问题是,我应该使用前一种方法,后一种方法还是完全不同的方法?

最佳答案

不要直接回答您的问题,但是我会摆脱所有的 setter (通常在任何情况下都有 setter 的坏兆头),并使用构造函数:

Color c = Color( 123, 17, 77 );

其中三个构造函数参数是RGB值。

09-11 12:07