所以,我基本上设计了一个“Hello,World!” OOP与c ++。 我有两个类,鸡和狗继承公共动物。 在int main中,当我创建每个实例时,我收到错误消息,声称我已经创建了Animal类的多个实例。
Animal.h
#ifndef ANIMAL
class Animal
{
int x;
int y;
int z;
public:
void setPosition(int newX, int newY, int newZ);
void setX(int newX);
void setY(int newY);
void setZ(int newZ);
int getPosition();
int getX();
int getY();
int getZ();
};
#endif
Chicken.h
#ifndef ANIMAL_H
#include "../animal.h"
#endif
class Chicken : public Animal
{
int id;
bool isClucking;
bool isEnraged;
public:
void setID(int newID);
void setClucking(bool yn);
void setEnraged(bool yn);
int getID();
bool getClucking();
bool getEnraged();
};
Dog.h
#include "../animal.h"
class Dog : public Animal
{
int id;
public:
void setID(int newID);
int getID();
};
此处代码:Source Code
答案 0 :(得分:5)
您将animal.h定义为
#ifndef ANIMAL
class Animal
{
应该是
#ifndef ANIMAL
#define ANIMAL
class Animal
{
以便多次不包含animal.h
。
另外,为保持一致性,请将所有标头都设为include guard。所以狗和鸡需要它。
除非你真的需要它
#ifndef ANIMAL_H
#include "../animal.h"
#endif
应该只是
#include "../animal.h"
因为前一个构造要求define
完全匹配,因为您的原因已经不匹配。 animal.h
定义ANIMAL
或者至少尝试过但您要包含的内容是您正在检查ANIMAL_H