我不知道如何表达两个将被子类化的类的依赖关系/关系。我认为一个例子可以在这里有所帮助:
假设我有两个班级,Master
并且Slave
. 该类Master
有一些方法,例如void use(Slave * s)
和Slave * generateFrom(int a)
class Master
{
public:
virtual void use(Slave * s) = 0;
virtual Slave * generateFrom(int a) = 0;
};
class Slave
{
};
现在我想继承这两个类,但不想失去它们之间的关系:
ConcreteMasterA ma();
ConcreteSlaveA * sa = ma.generateFrom(1);
ConcreteMasterB mb();
mb.use(sa); // THIS SHALL NOT WORK
Master * m = new ConcreteMasterA();
Slave * s = m->generateFrom(1); //s should now be a ConcreteSlaveA
m->use(s); // THIS SHALL WORK
有没有办法用 C++ 类/模板/什么来表达这种关系?
附加信息
也许我需要更具体:
我有Arm
代表机械臂的类。机器人手臂的状态由一些参数(角度、距离)指定,并由类表示JointVariableVector
我想稍后使用另一个类来控制手臂,但是这个类只能使用Arm
and导出的方法JointVariableVector
。
Arm
将被子类化以提供每个特定机器人手臂(例如 SCARA 或 KUKA)的正确功能,并且由于结构不同,我需要子类JointVariableVector
(例如,一个子类只有 2 个角度,另一个子类有 3 个角度和一个距离)