因此,我花了一些时间考虑这个问题,并在整个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值。