快速帮助需要基类undefined

时间:2015-08-29 21:59:37

标签: c++ class include public

无法在任何地方找到解决方案

这是我的文件布局

SDK.h

#pragma once
#include "Object.h"
#include "Panel.h"

Object.H

#pragma once
#include "SDK.h"

class BaseObject
{
etc...
}

Panel.h

#pragma once
#include "SDK.h"

class Panel : public BaseObject
{
etc...
}

然后是错误

Panel.h(5): error C2504: 'BaseObject' : base class undefined

有人可以告诉我如何正确地做到这一点?它可能是一个非常简单的解决方案:(

编辑:我看起来无法解决问题,我是否必须创建一个新文件并将其包含在.CPP文件中?

2 个答案:

答案 0 :(得分:1)

您没有包含有关无法编译代码的翻译单元的任何信息。因此,我在猜测。我的猜测是你首先要包括Object.h

  • 编译器开始包括Object.h并将其标记为不再包含
  • 编译器包含SDK.h,暂停包含Object.h并将其标记为不再包含
  • 跳过包含Object.h
  • 编译器包含Panel.h,暂停包含SDK.h并将其标记为不再包含
  • 跳过包含SDK.h
  • 已达到Panel的定义,但未定义BaseObject,但您收到错误

此修复不包括SDK.hObject.h中的Panel.h。相反,Panel.h应该包含Object.h,并且两个标题都应该包含他们需要的任何内容。

答案 1 :(得分:0)

  • 从Object.h中删除#include "SDK.H"

  • [最后的手段]如果问题仍未解决,请使用header guards,此处为tutorial