と呼ばれるクラスとToolConfigurationVector
と呼ばれるクラスがありJointVariableVector
ます。これらの2つのクラス間で変換できる必要があります(これらは同じデータの異なる表現です)
AToolConfigurationVector
は6つのプリミティブデータ型のみで構成されています。これは常に当てはまります。
Aは、クラスJointVariableVector
で表されるロボットアームに固有の表現です。 Arm
したがって、(say)の1つのサブクラスの場合、への変換は、 (say ) の別のサブクラスの表現および変換とは完全に異なります。Arm
SimpleArm
ToolConfigurationVector
Arm
ComplexArm
後で、次のようなクラスを使用したいと思います。
Arm * someArm = new ComplexArm();
// ...
JointVariableVector jvv = someArm.currentJointVariableVector();
ToolConfigurationVector tcv = jvv.toToolConfigurationVector(); // no problem using virtual function
JointVariableVector how = tcv.toJointVariableVector(); // how?
Arm
のどのサブクラスが使用されているかについての情報を含めたくありません。情報は何らかの方法ToolConfigurationVector
でに保存する必要があります。JointVariableVector
もちろん、次のようなテンプレートを使用することもできます。
JointVariableVector<ComplexArm> how = ...
しかし、これは私の場合には当てはまりません。これを解決するには、
someArm
tcv
ToolConfigurationVector
JointVariableVector
もちろん、次Arm
のような仮想メソッドjointVariableVectorFromToolConfigurationVector(ToolConfigurationVector v)
を指定することはできますが、静的にすることはできません。また、メソッド(静的なし)として実装する実際のオブジェクトとは関係がないため、私には間違っているようです。Arm
エレガントなソリューションを得るために何ができますか?もちろん、このソリューションも効率的である必要があります(必要なクラス、オブジェクト、および実行時間の観点から)。