Polymorphism 在C+;中从const基对象调用派生类而不使用虚拟对象+;

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 AnimalList..
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();
}