需要快速帮助,基类未定义

quick help needed base class undefined

本文关键字:基类 未定义 帮助      更新时间:2023-10-16

找不到解决方法

这是我的文件布局

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文件中?

您没有包含任何关于翻译单元无法编译代码的信息。因此,我只是猜测。我的猜测是你有一些东西首先包括Object.h:

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

修复是不包含Object.hPanel.h中的SDK.h。相反,Panel.h应该包括Object.h,两个头应该包括他们需要的任何其他内容。

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

  • [最后的手段]如果问题仍然没有解决,使用header guards,这里是它的教程