我有一个班级,名字叫ToolConfigurationVector
,班级叫JointVariableVector
。 我需要能够在这两个类之间进行转换(它们是相同数据的不同表示)从另一个班级创建特定于其他班级的班级的高效方法
A ToolConfigurationVector
只包含6个基本数据类型。情况总是如此。
A JointVariableVector
是特定于Robotarm的表示,由类Arm
表示。
所以对于一个子类的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 = ...
但这并不适用于我而言,我必须解决这个问题使用ONLY
someArm
tcv
ToolConfigurationVector
JointVariableVector
我当然可以给Arm
像jointVariableVectorFromToolConfigurationVector(ToolConfigurationVector v)
一个虚拟的方法,但我不能让它静态的,因为它有什么做其实现为方法的实际Arm
对象(没有静态)对我来说似乎是错误的。
我能做些什么来获得优雅的解决方案?当然,这个解决方案也应该是高效的(根据所需的类,对象和执行时间)。
很抱歉的冠军,但我不能让这个总结。可能被提名为“最差冠军”奖项... –
那么免费功能呢?他们被允许吗? –
你的意思是免费的功能呢?我需要将'ToolConfigurationVector'转换为'JointVariableVector',但是这种转换需要附加信息('someArm'的**类型**)。我知道如何使用'Arm'中的(虚拟)方法来做到这一点,但这对我来说似乎是错误的。 –