我之前的问题被问错了,所以我将其修复。
我有这个例子扔
expected class-name before ‘{’ token
编译时出错。我知道为什么会失败,但是我不知道如何解决。谢谢。
BaseClass.h

#ifndef INHERITTEST_BASECLASS_H
#define INHERITTEST_BASECLASS_H

#include "ElementClass.h"

class ElementClass;

class BaseClass
{

private:
    ElementClass *m_someField;
};


#endif



元素类

#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行,因为您仅通过指针使用这些类,并且向前声明足以实现此目的。

10-06 15:28