我有一个名为的类ToolConfigurationVector和一个名为JointVariableVector. 我需要能够在这两个类之间进行转换(它们是相同数据的不同表示)
AToolConfigurationVector仅包含 6 个原始数据类型。情况总是如此。
AJointVariableVector是特定于 Robotarm 的表示,由class Arm表示。
因此,对于 (say ) 的一个子类,表示和转换为(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,这对我来说似乎是错误的。
我该怎么做才能获得优雅的解决方案?当然,这个解决方案也应该是高效的(就所需的类、对象和执行时间而言)。