UE5.3空白C++项目遇编译错误,求非仅构建的解决方案
UE5.3 自定义ABaseCharacter类编译错误解决方案(E0070、E1455)
针对E0070:incomplete type is not allowed(StringView.h 第408、415行)
这类错误本质是类型未被完整定义,常见于头文件依赖缺失或项目缓存异常,可按以下步骤排查:
- 补全必要头文件:确保
BaseCharacter.h开头包含核心头文件:
若代码中用到字符串视图相关操作,额外添加#include "CoreMinimal.h" #include "GameFramework/Character.h" #include "BaseCharacter.generated.h"#include "Misc/StringView.h"。 - 检查模块依赖:打开项目的
SampleShooter.Build.cs,确认PrivateDependencyModuleNames包含必要模块:PrivateDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); - 清理缓存并重新生成项目:删除项目目录下的
Binaries、Intermediate、Saved文件夹,右键.uproject文件选择Generate Visual Studio Project Files,重新打开项目编译。
针对E1455:member function declared with ‘override’ does not override a base class member(ArchiveProxy.h 第157、167行)
该错误多为VS IntelliSense缓存误报或自定义类的override函数签名不匹配,解决方案如下:
- 验证
override函数签名:检查ABaseCharacter中所有带override关键字的函数,确保与基类ACharacter的签名完全一致。例如:
注意参数的修饰符、类型,返回值是否与基类完全一致,避免因细微差异导致的编译/智能感知错误。// 正确示例:与ACharacter基类签名匹配 virtual void Tick(float DeltaTime) override; virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; - 重置VS IntelliSense缓存:关闭Visual Studio,删除项目目录下的隐藏
.vs文件夹,重新打开项目后执行项目 → Rescan Solution操作。 - 强制包含核心头文件:在项目属性的
C/C++ → Advanced → Force Includes中添加$(EngineDir)\Source\Runtime\Core\Public\CoreMinimal.h,确保引擎核心类型被正确识别。
通用排查要点
- 确认使用的是UE5.3官方正式版,避免使用第三方修改的引擎分支。
- 检查
ABaseCharacter的类声明是否正确继承自ACharacter,且UCLASS()、GENERATED_BODY()宏无遗漏。
内容的提问来源于stack exchange,提问作者McAfee
相关产品推荐
相关产品推荐

