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