両方がサブクラス化される2つのクラスの依存関係/関係を表現する方法がわかりません。ここで例が役立つと思います:
2つのクラスがあるMaster
としましょうSlave
。Master
クラスには、次のようないくつかのメソッドがvoid use(Slave * s)
あります。Slave * generateFrom(int a)
class Master
{
public:
virtual void use(Slave * s) = 0;
virtual Slave * generateFrom(int a) = 0;
};
class Slave
{
};
ここで、これらのクラスの両方をサブクラス化したいのですが、それらの間の関係を失いたくありません。
ConcreteMasterA ma();
ConcreteSlaveA * sa = ma.generateFrom(1);
ConcreteMasterB mb();
mb.use(sa); // THIS SHALL NOT WORK
Master * m = new ConcreteMasterA();
Slave * s = m->generateFrom(1); //s should now be a ConcreteSlaveA
m->use(s); // THIS SHALL WORK
この関係をC++クラス/テンプレート/何かで表現する方法はありますか?
追加情報
おそらく私はもっと具体的にする必要があります:
Arm
ロボットアームを表すクラスがあります。ロボットアームの状態は、いくつかのパラメータ(角度、距離)によって指定され、クラスによって表されます。JointVariableVector
後で別のクラスを使用してアームを制御したいのですが、このクラスはとによってエクスポートされたメソッドのみを使用Arm
しますJointVariableVector
。
Arm
特定のロボットアーム(スカラやKUKAなど)ごとに正しい機能を提供するためにサブクラス化されます。構造が異なるため、サブクラスが必要ですJointVariableVector
(たとえば、1つのサブクラスは2つの角度のみで、別のサブクラスは3つの角度と1つの距離)