gpt4 book ai didi

C++多个类继承自基类导致问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:36 24 4
gpt4 key购买 nike

所以,我基本上设计了一个“Hello, World!”面向对象与 C++。我有 2 个类(class),鸡和狗继承自公共(public)动物。在 int main 中,当我创建每个的实例时,我收到错误消息,声称我已经创建了类 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

鸡.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

最佳答案

您将 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

关于C++多个类继承自基类导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com