Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;从基类继承的多个类导致问题 所以,我基本上用C++设计了一个“hello,World!”OOP。 我有两个班,鸡和狗,从公共动物继承。 在int main中,当我创建每个类的实例时,会收到错误消息,声称我创建了类Animal的多个实例_C++_Linux_Oop - Fatal编程技术网

C++;从基类继承的多个类导致问题 所以,我基本上用C++设计了一个“hello,World!”OOP。 我有两个班,鸡和狗,从公共动物继承。 在int main中,当我创建每个类的实例时,会收到错误消息,声称我创建了类Animal的多个实例

C++;从基类继承的多个类导致问题 所以,我基本上用C++设计了一个“hello,World!”OOP。 我有两个班,鸡和狗,从公共动物继承。 在int main中,当我创建每个类的实例时,会收到错误消息,声称我创建了类Animal的多个实例,c++,linux,oop,C++,Linux,Oop,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

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();
};

此处代码:

您将动物.h定义为

#ifndef ANIMAL
class Animal
{
应该是

#ifndef ANIMAL
#define ANIMAL
class Animal
{
因此,
animal.h
不包含多次

此外,为了保持一致性,请让所有标题都有一个标题。所以狗和鸡需要它


除非你真的需要它

#ifndef ANIMAL_H
#include "../animal.h"
#endif
应该是

#include "../animal.h"

因为前一个构造要求定义与您的原因中已经不匹配的匹配
animal.h
定义
animal
或至少尝试定义,但您包括的是检查
animal\u h
您将动物.h定义为

#ifndef ANIMAL
class Animal
{
应该是

#ifndef ANIMAL
#define ANIMAL
class Animal
{
因此,
animal.h
不包含多次

此外,为了保持一致性,请让所有标题都有一个标题。所以狗和鸡需要它


除非你真的需要它

#ifndef ANIMAL_H
#include "../animal.h"
#endif
应该是

#include "../animal.h"

因为前一个构造要求定义与您的原因中已经不匹配的匹配
animal.h
定义
animal
或至少尝试定义,但您包括的是检查
animal\u h

请在问题中发布您的代码。请编辑您的问题,而不是链接到完整的代码,以包含一个演示您的问题的代码。此外,请发布编译器的确切错误消息,以及编译器的名称和版本。请在问题中发布您的代码。请编辑您的问题以包含一个演示您的问题的,而不是链接到完整的代码。此外,请发布编译器的确切错误消息,以及编译器的名称和版本。我鼓励使用
#pragma once
BTW;)我鼓励使用
#pragma一次