5

シンプルなObject-Componentsデザインをしています。何かのようなもの:

class Object1 : public Object
{
    Component1 _comp1;
    Component2 _comp2;
    ...
    ComponentN _compN;
};

内部でメソッドを呼び出すメソッドを作成せずpublic:に、Objects1一部のメソッドのメソッドとして公開することはできますか?ComponentKObject1ComponentK

メソッドを公開するたびに関数を記述するのは非常に面倒なので、これを行う簡単な方法が必要ですComponentK

4

2 に答える 2

13

直接ではありません。プライベート継承を使用して、コンポーネントを集約する代わりにコンポーネントから継承し (プライベート継承はis-a を表現しないことに注意してください)、それらのメンバー関数の一部を によって公開できますusing。このようなもの:

class Object1 : public Object, private Component1, private Component2, ..., private ComponentN
{
public:
  using Component1::function1();
  using Component1::function2();
  ...
  using ComponentN::functionM();
};

それが必ずしも最善の方法だとは言いませんが方法です。

于 2013-04-09T06:40:07.653 に答える