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