だから私はこれについて考えるのに時間を費やし、「解決策」を探してグーグル全体に行きました(解決策はおそらく好みの問題ですが、私はこれについて確信が持てません)。以下は私が抱えている問題ですが、この問題は構成に関する多くの状況に適用できます。
赤、緑、青、およびアルファのメンバーを含むクラス Color があります。これらにはそれぞれ 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 クラスへの変更の影響を受けやすいのではないでしょうか? get と set が互いに衝突するため、 colorableObject.getColour().setRed(x) は私にはあまり自然に思えないことは言うまでもありません。
私はおそらく完全に間違ったアプローチをしています。私はC++に比較的慣れていないので、喜んで学びます!問題は、前者の方法を使用するか、後者の方法を使用するか、またはまったく異なる方法を使用するかです。