C ++类继承"期望的类名"错误

时间:2016-03-16 20:26:34

标签: c++ inheritance compilation

我之前提出的问题是错误的,所以我会将其固定发布 我有这个例子投掷
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


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

2 个答案:

答案 0 :(得分:2)

你有循环依赖的.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行,因为您只是通过指针使用这些类,并且前向声明足以达到此目的。

答案 1 :(得分:0)

当您使用继承时,请使用以下

#include "ChildClass.h"
class ChildClass;

是不必要的,如果你打算将这些文件分解为单独的源文件(看起来像你),你可以说

#include "ElementClass.h"

在派生类的源文件中