【发布时间】:2020-06-20 20:47:41
【问题描述】:
我正在头文件中定义一个类。它继承自另一个名为 AGameMode 的类。在编辑器中,我正在从 Gamemode 创建新类,它会自动生成 .h 和 .cpp 文件。问题是,我已经包含了必要的头文件,但仍然看不到我想从中继承的类。相反,它会引发我的错误。让我用代码解释一下:
//ACollectorMan_GameMode.h
#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "CollectorMan_GameMode.generated.h"
UCLASS()
class MYPROJECT2_API ACollectorMan_GameMode : public AGameMode
{
GENERATED_BODY()
ACollectorMan_GameMode();
}
当我声明构造函数并编译时,它会显示错误。但是如果我不声明它,在编辑器第 7 行(class MYPROJECT2_API ACollectorMan_GameMode : public AGameMode)不会抛出错误(仍然是红色的)。
这不仅适用于 Gamemode 父类。 Character 或 Pawn 类有同样的问题。当我构建 VS 时给了我这个错误:
CollectorMan_GameMode.cpp.obj : error LNK2019: unresolved external symbol "private: __cdecl ACollectorMan_GameMode::ACollectorMan_GameMode(void)" (??0ACollectorMan_GameMode@@AEAA@XZ) referenced in function "public: static void __cdecl ACollectorMan_GameMode::__DefaultConstructor(class FObjectInitializer const &)" (?__DefaultConstructor@ACollectorMan_GameMode@@SAXAEBVFObjectInitializer@@@Z)
CollectorMan_GameMode.gen.cpp.obj : error LNK2001: unresolved external symbol "private: __cdecl ACollectorMan_GameMode::ACollectorMan_GameMode(void)" (??0ACollectorMan_GameMode@@AEAA@XZ)
这应该是链接器问题,但是“GameFramework/GameMode.h”中提供了“GameMode.h”文件。我可以给你看一个类似的文件。但它的作品。有一个例子:
#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "MyProject2GameMode.generated.h"
UCLASS()
class AMyProject2GameMode : public AGameModeBase
{
GENERATED_BODY()
AMyProject2GameMode();
};
我就是这么说的。 提前致谢。
【问题讨论】:
-
错误是说你必须实现你的构造函数,或者删除声明。如果您保留它们,它们还需要是
public。
标签: c++ unreal-engine4