1

だから、私は基本的に「Hello, World!」をデザインしました。C++ による OOP。public animal から継承する 2 つのクラス、chicken と dog があります。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();
};

ここにコード:ソースコード

4

1 に答える 1

5

animal.h が次のように定義されています。

#ifndef ANIMAL
class Animal
{

する必要があります

#ifndef ANIMAL
#define ANIMAL
class Animal
{

そのため、animal.h複数回含まれることはありません。

また、一貫性を保つために、すべてのヘッダーにインクルード ガードを付けてください。だから犬と鶏はそれを必要とします。


本当に必要でない限り

#ifndef ANIMAL_H
#include "../animal.h"
#endif

単純にする必要があります

#include "../animal.h"

前者の構成は、defineあなたの原因ですでに一致していない正確な一致を必要とするためです。animal.h定義するANIMALか、少なくとも試みますが、含める場所はチェックしていますANIMAL_H

于 2013-07-26T18:46:02.117 に答える