C++类继承 "expected class-name"错误

标签 c++ inheritance compilation

我之前的问题被问错了,所以我会发布它。
我有这个例子扔
在“{”标记之前需要类名
编译时出错。我明白为什么会失败,但我不知道如何解决。谢谢。
BaseClass.h

#ifndef INHERITTEST_BASECLASS_H
#define INHERITTEST_BASECLASS_H

#include "ElementClass.h"

class ElementClass;

class BaseClass
{

private:
    ElementClass *m_someField;
};


#endif


元素类.h

#ifndef INHERITTEST_ELEMENTCLASS_H
#define INHERITTEST_ELEMENTCLASS_H

#include "ChildClass.h"

class ChildClass;

class ElementClass
{
private:
    ChildClass *m_class;
};


#endif


ChildClass.h

#ifndef INHERITTEST_CHILDCLASS_H
#define INHERITTEST_CHILDCLASS_H

#include "BaseClass.h"

class ChildClass : public BaseClass
{

};


#endif

最佳答案

你有循环依赖的 .h 文件。

在 BaseClass.h 中:

#ifndef INHERITTEST_BASECLASS_H
#define INHERITTEST_BASECLASS_H

#include "ElementClass.h"  // Includes ElementClass.h

在 ElementClass.h 中:

#ifndef INHERITTEST_ELEMENTCLASS_H
#define INHERITTEST_ELEMENTCLASS_H

#include "ChildClass.h"   // Which included BaseClass.h

您可以删除那些 #include 行,因为您仅通过指针使用这些类,并且前向声明足以达到该目的。

关于C++类继承 "expected class-name"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046265/

相关文章:

android - 从 NDK 获取 IMEI 或电话 ID

javascript - Javascript 是一种基于原型(prototype)的语言是什么意思?

c++ - 为什么clang和GCC不使用xchg来实现std::swap?

c++ - Windows/Cygwin - 无法使用 pybind11 - 出错

c++ - 有据可查、开源且快速的 C/C++ 图像处理库。比如 'resize' ,旋转,变色,裁剪

VB.NET 设计器错误 : How to (correctly) inherit form that inherits form?

c# - 继承和 'Curiously Recurring Template Pattern'

java - Java 将枚举编译成什么?

mysql - Arduino + MySql + MySqlIO 编译时出错

c++ - 使用 QTcpSocket 传输大文件时“内存已满”