几天前我问了一些关于继承的澄清,我仍在努力理解这个概念。这是后续问题,因为我仍然面临问题。
在我的项目中,我有 2 种类型的对象,手和脸,它们都继承自基类 BodyPart。BodyPart 是这样的:
class BodyPart
{
public:
typedef boost::shared_ptr<BodyPart> BodyPartPtr;
BodyPart();
virtual ~BodyPart();
private:
int commonMember1;
double commonMember2;
public:
int commonMethod1();
int CommonMethod2();
}
而 Hand 是这样的:
class Hand : public BodyPart
{
public:
Hand();
~Hand();
private:
int numFingers;
double otherVar;
public:
int getNumFingers();
void printInfo();
}
我还有一个 BodyPart 元素的向量
std::vector<BodyPart::BodyPartPtr> cBodyParts;
由手或头对象组成。在上一个问题中,有人告诉我这种方法很有意义,我只需要使用 boost 从基类转换为派生类static_pointer_cast
现在,现在的问题是,对于向量中的某些对象,我不知道它们是Hand
or Head
,所以在我的代码中的某个时刻,我可以在cBodyParts
一些元素中包含一些Hand
元素,一些Head
元素以及一些BodyPart
元素。经过一些进一步的分析,我能够正确地将后者分类为Hand
orHead
并相应地修改向量中的元素,但我不知道如何制作它。我应该删除案例类元素并创建一个具有相同属性的派生类元素吗?在这种情况下我应该避免继承吗?
在此先感谢您的帮助