#include<iostream>
using namespace std;typedef int HANDS;
enum COLOR{Red,Green,Blue,Yellow,White,Black,Brown};class Animal
{
public:
Animal(int);
virtual~Animal(){cout<<"Animal destructor...\n";}
virtual int GetAge() const{return itsage;}
virtual void SetAge(int age){itsage=age;}
private:
int itsage;
};class Horse:public Animal
{
public:
Horse(COLOR color,HANDS height,int age);
virtual~Horse(){cout<<"Horse destructor...\n";}
virtual void Whinny() const{cout<<"Whinny...";}
virtual HANDS GetAge() const{return itsheight;}
virtual COLOR GetColor()const{return itscolor;}
protected:
HANDS itsheight;
COLOR itscolor;
};
Horse::Horse(COLOR color,HANDS height,int age):Animal(age),itscolor(color),itsheight(height)
{
cout<<"Horse constructor...";
}class Bird:public Animal
{
public:
Bird(COLOR color,bool migrate,int age);
virtual~Bird(){cout<<"Bird destructor...";}
virtual void Chirp()const{cout<<"Chirp..";}
virtual void fly()const{cout<<"I can fly!I can fly!I can fly!\n";}
virtual COLOR GetColor() const{return itscolor;}
virtual bool GetMigration()const{return itsmigration;}
protected:
COLOR itscolor;
bool itsmigration;
};Bird::Bird(COLOR color,bool migrate,int age):Animal(age),itscolor(color),itsmigration(migrate)
{
cout<<"Bird constructor...";
}class Pegasus:public Horse,public Bird
{
public:
void Chirp()const{Whinny();}
Pegasus(COLOR,HANDS,bool,long,int);
virtual~Pegasus(){cout<<"Pegasus destructor...";}
virtual long GetNumberBeliever() const{return itsnumberbeliever;}
virtual COLOR GetColor() const{return Horse::GetColor();}
virtual int GetAge()const{return Horse::GetAge();}
private:
long itsnumberbeliever;
};Pegasus::Pegasus(COLOR color,HANDS height,bool migrate,long numbelieve,int age):Horse(color,height,age),Bird(color,migrate,age),itsnumberbeliever(numbelieve)
{
cout<<"Pegasus constructor...";
}
int main()
{
Pegasus* pPeg=new Pegasus(Red,5,true,10,2);
int age=pPeg->GetAge();
cout<<"This pegasus is "<<age<<"years old.\n";
delete pPeg;
return 0;
}
1>------ 已启动全部重新生成: 项目: 共同基类下避免多重继承的歧义, 配置: Debug Win32 ------
1>正在删除项目“共同基类下避免多重继承的歧义”(配置“Debug|Win32”)的中间文件和输出文件
1>正在编译...
1>共同基类下避免多重继承的歧义.cpp
1>正在链接...
1>共同基类下避免多重继承的歧义.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Animal::Animal(int)" (??0Animal@@QAE@H@Z),该符号在函数 "public: __thiscall Horse::Horse(enum COLOR,int,int)" (??0Horse@@QAE@W4COLOR@@HH@Z) 中被引用
1>D:\c++\共同基类下避免多重继承的歧义\Debug\共同基类下避免多重继承的歧义.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://d:\c++\共同基类下避免多重继承的歧义\共同基类下避免多重继承的歧义\Debug\BuildLog.htm”
1>共同基类下避免多重继承的歧义 - 2 个错误,0 个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========