C++问题继承问题 不知道哪里不行,求解

#include
#include
using namespace std;

class Animal
{public:
Animal(int l,int w,char s);

void display();
protected:
int length;
int weight;
char sex;    

};
Animal::Animal(int l,int w,char s):
length(l),weight(w),sex(s){}
void Animal::display()
{
cout<<"length:"<<length<<endl;
cout<<"weight:"<<weight<<endl;
cout<<"sex:"<<sex<<endl;
}

//陆生动物
class Ter_animal:public Animal
{public:
Ter_animal(int l,int w,char s,int r);
void show();
protected:
int running_speed;
};

Ter_animal::Ter_animal(int a,int b,char s,int r):
Animal(a,b,s),running_speed(r){}
void Ter_animal::show()
{Animal::display();
cout<<"running_speed:"<<running_speed<<endl;
}

//水生动物
class Aqu_animal:public Animal
{public:
Aqu_animal(int l,int w,char s,int g);
void show();
protected:
int swimming_speed;
};

Aqu_animal::Aqu_animal(int a,int b,char s,int g):
Animal(a,b,s),swimming_speed(g){}
void Aqu_animal::show()
{Animal::display();
cout<<"swimming_speed:"<<swimming_speed<<endl;
};

//两栖动物
class Amp_animal:public Animal,Ter_animal,public Aqu_animal
{public:
Amp_animal(int l,int w,char s,int r,int g);
void show();
};

Amp_animal::Amp_animal(int l,int w,char s,int r,int g):
Aqu_animal( l, w, s, g),Ter_animal( l, w, s, r),Animal(l,w,s){}
void Amp_animal::show()
{Animal::display();
cout<<"running_speed:"<<Ter_animal::running_speed<<endl;
cout<<"swimming_speed:"<<Aqu_animal::swimming_speed<<endl;
}

int main()
{Amp_animal amp_animal1(52,22,"f",102,122);
Amp_animal1.show();
return 0;
}

这是菱形继承的问题,需要把Animal变为虚继承。

//陆生动物
class Ter_animal: virtual public Animal

//水生动物
class Aqu_animal: virtual public Animal

//两栖动物
class Amp_animal: virtual public Animal, public Ter_animal, public Aqu_animal
(两栖动物类感觉不需要再继承Animal类,可以直接写成 class Amp_animal: public Ter_animal, public Aqu_animal)

另外main函数有两处错误,要改成

int main()
{
    Amp_animal amp_animal1(52,22,'f',102,122);
    amp_animal1.show();
    return 0;
}