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