Animal
|
Mammal
/ \
TwoLegged - FourLegged
/ \
Human Lion
У меня есть эта иерархия классов, каждый класс определен в своем собственном заголовке.Теперь, когда я включаю и Human.h и Lion.h в одном месте, я получаю ошибку переопределения Mammal.
error C2011: 'Mammal' : 'class' type redefinition
Это потому, что Mammal.h включен в классы TwoLegged и OneLegged.
Однако я не уверен, как я могу разрешить эту циклическую зависимость в заголовках, поскольку я не могу изменить иерархию классов.
Кто-нибудь хочет помочь?
РЕДАКТИРОВАТЬ:
Заголовок млекопитающего
#ifndef MAMMAL_H
#define MAMNAL_H
#include "stdafx.h"
#include "Animal.h"
class Mammal : public Animal
{
public:
Mammal::Mammal();
virtual Mammal::~Mammal();
std::string mammal_name();
int mammal_age();
int mammal_expectedlifedays();
bool mammal_hunter();
int mammal_power();
int mammal_birthrate();
bool mammal_alive();
protected:
Mammal::Mammal(const std::string& mname, int mexpectedlifedays, int mage, bool mhunter, int mpower, int mbirthrate, bool malive) : Animal(mname, mexpectedlifedays, mage,mhunter, mpower, mbirthrate, malive)
{}
private:
};
#endif
Ошибки, указанные компилятором:
error C2011: 'Mammal' : 'class' type redefinition
see declaration of 'Mammal'
error C2504: 'Mammal' : base class undefined
error C2614: 'TwoLegged' : illegal member initialization: 'Mammal' is not a base or member
Примечание: это не домашняя работа, иначе я бы пометил ее как таковую.