Polymorphism 在C+;中从const基对象调用派生类而不使用虚拟对象+;
下面是typedef AnimalList..Polymorphism 在C+;中从const基对象调用派生类而不使用虚拟对象+;,polymorphism,Polymorphism,下面是typedef AnimalList.. typedef矢量动物列表 主要功能结构是这样的 class Animal { public : virtual int getNumOfLegs() const = 0; } class Bird: public Animal { public: virtual int getNumOfLegs() const override; int getNumOfWings() const
typedef矢量动物列表
主要功能结构是这样的
class Animal
{
public :
virtual int getNumOfLegs() const = 0;
}
class Bird: public Animal
{
public:
virtual int getNumOfLegs() const override;
int getNumOfWings() const;
}
我想做的是当'MyAnimalList'参数中有Bird类时,
DoCalc函数计算鸟翅膀的数量
我是说
DoCalc(const AnimalList& MyAnimalList)
{
blah..blah..
}
然而VS Error说:E0135动物中没有成员“getNumberOfWings”
因为不是所有动物都有翅膀,我不想让虚拟函数getNumberOfWings。
另外,我想通过接受动物向量参数为多态性留出一些空间,这样它不仅可以接收鸟类,还可以接收鱼、猪等。。。(即DoCalc(const AnimalList&MyAnimalList)
)
我怎样才能完成这件事
DoCalc(const AnimalList& MyAnimalList)
{
iMyCount = MyAnimalList.size()*List.getNumberOfWings();
}