我希望使用一个父类来调用所有的子类的某一个函数,我使用了虚函数但是貌似不行,而且出错了
#include <iostream>
using namespace std;#include <windows.h>class Animal
{
private:
    virtual void Alive();public:
    int air;
    int setAir(int air)
        {
            air = air;            Alive();            return 0;
        };
};class girl:public Animal
{
private:
    void Alive();
    public:
    
    int Dead();};void girl::Alive() 
{
    if(Animal::air <10)
    {
        girl::Dead();
    }}
int girl::Dead()
{
    cout<<"girl all dead!!!"<<endl;
    return 0;
}class human:public Animal
{
private:
    void Alive();
    public:
    
    int Dead();
};int human::Dead()
{
    cout<<"human all dead!!!"<<endl;
    return 0;
}void human::Alive ()
{
    if(Animal::air <10)
    {
        human::Dead();
    }
}int a;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
Animal t;
t.setAir (8);
    return 0;
}

解决方案 »

  1.   

    class girl:public Animal
    {
    private:
       virtual void Alive();//这也得加virtual吧
        
      

  2.   

    对你的例子稍加修改:
    #include <iostream>
    using namespace std;class Animal
    {
      private:
        int f_air;
        virtual void Alive();  public:
        int Air()
        {
          return f_air;
        }    int SetAir(int air)
        {
          f_air = air;
          Alive();      return air;
        };
    };void Animal::Alive()
    {
    }
    class Girl: public Animal
    {
      private:
        void Alive();  public:
        int Dead();
    };void Girl::Alive() 
    {
      if(Air() < 10) Girl::Dead();
      else
        cout<<"Girl alive!"<<endl;
    }int Girl::Dead()
    {
      cout<<"Girl all dead!!!"<<endl;
      return 0;
    }
    class Human: public Animal
    {
      private:
        void Alive();  public:
        int Dead();
    };void Human::Alive()
    {
      if(Air() <10) Human::Dead();
      else
        cout<<"Human alive!"<<endl;
    }int Human::Dead()
    {
      cout<<"Human all dead!!!"<<endl;
      return 0;
    }int main()
    {
      Animal *a = new Girl;
      Animal *b = new Human;  a->SetAir(11);
      a->SetAir(8);
      b->SetAir(11);
      b->SetAir(8);  delete a, b;  return 0;
    }