に共通のメンバーを入れて:C++ - 以下のクラス階層を含むライブラリをしてみましょう二つのサブクラス
class LuaChunk
{
};
class LuaExpr : public LuaChunk
{
};
class LuaScript : public LuaChunk
{
};
今、私はこれらの2つのクラスを拡張することで、自分のアプリケーションでこのライブラリを使用したいと思います:
class AppLuaExpr : public LuaExpr
{
private:
Foo * someAppSpecificMemberFoo;
Bar * someAppSpecificMemberBar;
};
class AppLuaScript : public LuaScript
{
private:
Foo * someAppSpecificMemberFoo;
Bar * someAppSpecificMemberBar;
};
ここで問題になるのは、メンバーが多く、それぞれが独自のゲッター/セッターのペアを持っていると、多くのコードの複製が生成されることです。
AppLuaExpr
とAppLuaExpr
に含まれるアプリケーション固有のものを共通に入れるために、複数の継承(避けたい)を使用しない方法がありますか?
私はWikipediaに掲載されている既存の構造設計パターンを見てきましたが、これらは私の問題に適合しているようには見えません。
ありがとうございます。
*構成*の使用はどうですか?共通のメンバーとコードでクラスを作成し、それを具体クラスのメンバーとして追加しますか? – Louen
@ルーアンご協力いただきありがとうございます。はい、それは選択肢のようです。他のアイデア? – Virus721
@songyuanyaoいいえ私はそれをすることはできません。私が言及したように、上で説明した最初の3つのクラスはライブラリ内にあり、アプリケーション固有のものを追加することはできません。そうでなければ、もはやライブラリではありません。 – Virus721