我不熟悉继承的概念,我正在努力寻找解决以下问题的方法。
我有2个班,头和手。我主要将这些类的实例用作向量的元素。这两个类有共同的方法和只有它们特有的方法。
此外,我处理对象的共享指针。
我认为实现它的最佳方法是创建一个 BodyPart 类,像这样
class BodyPart
{
public:
typedef boost::shared_ptr<BodyPart> pointer;
private:
int commonMember1;
double commonMember2;
public:
int commonMethod1();
int CommonMethod2();
}
和这样的两个派生类
class Hand : public BodyPart
{
public:
typedef boost::shared_ptr<Hand> pointer;
private:
int numFingers;
public:
int getNumFingers();
void printInfo();
}
最后,我想声明一个 BodyPart 元素的向量:
std::vector<BodyPart::pointer> cBodyParts;
包含 Hand 或 Head 元素,并在需要时在向量元素上调用我的方法。
但这种方法似乎效果不佳。显然,当我尝试获取向量的元素时,编译器抱怨它无法从 BodyPart 共享指针转换为 Hand 共享指针。此外,如果向量像上面那样声明,我不能在其元素上调用特定于派生类的方法(如 getNumFinger() ),即使实际上来自该类。
有没有合适的方法来处理这个问题?还是我的方法完全错误?提前致谢!