找不到解决方法
这是我的文件布局
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.h
或Panel.h
中的SDK.h
。相反,Panel.h
应该包括Object.h
,两个头应该包括他们需要的任何其他内容。
-
从Object.h中删除
#include "SDK.H"
-
[最后的手段]如果问题仍然没有解决,使用
header guards
,这里是它的教程