C++从基类继承的多个类会导致问题
C++ multiple classes inheriting from a base class causing issues
所以,我基本上设计了一个"Hello, World!带有 c++ 的 OOP。我有2个班级,从公共动物继承的鸡和狗。在 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();
};
此处的代码:源代码
你把 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
相关文章:
- 我是否需要在虚拟继承类的构造函数中初始化基类以解决菱形继承问题?
- 关于C++从派生类调用在基类中实现的虚拟函数的问题
- 为什么不允许在非推导上下文中使用基类定义,以及如何解决这个问题
- 类型特征检查 CRTP 派生,在基类中,问题是未定义的类型
- 试图在具有std ::任何构造函数的基类中调用复制构造函数的问题
- 分配派生类的对象时出现问题,其中基类具有抽象虚函数
- 纯基类 c++ 的动态数组出现问题
- C++编译器错误基类问题
- 基类的复制构造函数的可见性问题
- 设计问题迫使我将基类向下转换为派生类型
- 将抽象基类作为成员处理时的所有权问题
- VS2013 在未命名命名空间中遇到基类问题
- 模板类和继承问题 - 'List'不命名非静态数据成员或基类
- 设计问题,基类知道它的导数
- 从派生类调用基类函数时出现问题
- 继承基类时遇到问题
- 验证我的超类或基类是宏或模板声称的那个类时出现问题
- 子类到基类的转换问题
- C++从基类继承的多个类会导致问题
- C++中的通用访问者基类模板-重载问题