所以我花了一些时间思考这个问题,并且在谷歌上到处寻找“解决方案”(解决方案很可能是一个偏好问题,但我对此不确定)。以下是我遇到的问题,但这个问题可以应用于很多关于构图的情况。
我有一个类,颜色,包含红色、绿色、蓝色和 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 类提供自己的集合并获取颜色函数,其中作用于 Color 对象,如下所示:
class ColourableObject
{
public:
float getRed();
void setRed(float);
...
private:
Colour colour;
};
对我来说,前者是最合乎逻辑的,因为它可以通过简单地直接作用于这个 Color 对象来为每个需要这个 Color 对象的类添加功能,从而省去很多麻烦。
但是,后者不是更容易更改 ColourableObject 类吗?更不用说 colourableObject.getColour().setRed(x) 对我来说似乎不太自然,因为 get 和 set 相互冲突。
我可能完全有错误的方法。我对C++比较陌生,所以我愿意学习!所以问题是,我应该使用前一种方法,后一种方法,还是完全不同的方法?