UE4 数据表结构错误
UE4 Data Table Struct Errors
我正在遵循有关CSV表条目的Pact教程。本教程要求我a( 创建一个新的 Actor 类,b( 将其命名为 TestCustomData,以及 c(将新生成的 TestCustomData.h 的内容替换为以下代码:
#pragma once
#include "TestCustomData.generated.h"
USTRUCT(BlueprintType)
struct FTestCustomData : public FTableRowBase
{
GENERATED_USTRUCT_BODY()
UPROPERTY( BlueprintReadOnly, Category = "TestCustomData" )
int32 SomeNumber;
UPROPERTY( BlueprintReadOnly, Category = "TestCustomData" )
FString SomeString;
};
但是,TestCustomData 文件编译失败,输出以下日志:
Error f:unrealue4 assignmentsue4_projectrpgsourceue4_projectrpgTestCustomData.h(5) : error C2504: 'FTableRowBase': base class undefined
Info Compiling game modules for hot reload
Info Parsing headers for UE4_ProjectRPGEditor
Info Running UnrealHeaderTool "F:UnrealUE4 AssignmentsUE4_ProjectRPGUE4_ProjectRPG.uproject" "F:UnrealUE4 AssignmentsUE4_ProjectRPGIntermediateBuildWin64UE4_ProjectRPGEditorDevelopmentUE4_ProjectRPGEditor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -installed
Info Reflection code generated for UE4_ProjectRPGEditor in 3.4146568 seconds
Info Performing 4 actions (4 in parallel)
Info TestCustomData.cpp
Info UE4_ProjectRPG.generated.cpp
Error f:unrealue4 assignmentsue4_projectrpgsourceue4_projectrpgTestCustomData.h(6) : error C3646: 'Super': unknown override specifier
Error f:unrealue4 assignmentsue4_projectrpgsourceue4_projectrpgTestCustomData.h(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error F:UnrealUE4 AssignmentsUE4_ProjectRPGSourceUE4_ProjectRPGTestCustomData.h(5) : error C2504: 'FTableRowBase': base class undefined
Error F:UnrealUE4 AssignmentsUE4_ProjectRPGSourceUE4_ProjectRPGTestCustomData.h(6) : error C3646: 'Super': unknown override specifier
Error F:UnrealUE4 AssignmentsUE4_ProjectRPGSourceUE4_ProjectRPGTestCustomData.h(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Info ERROR: UBT ERROR: Failed to produce item: F:UnrealUE4 AssignmentsUE4_ProjectRPGBinariesWin64UE4Editor-UE4_ProjectRPG-3031.dll
Info Total build time: 6.88 seconds (Local executor: 0.00 seconds)
我对UE4中的StackOverflow和C++相当陌生,任何帮助将不胜感激。也欢迎任何反馈来改进我的问题!提前感谢您的帮助。
我被困在同一个地方,这修复了它: 我将资产命名为"MyActor2",将 Strucure 命名为"ThisNewStructure",所以有一些小区别......
我认为基本上包括Datatable.h和"public:"才起作用。
头文件:
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Runtime/Engine/Classes/Engine/DataTable.h"
#include "MyActor2.generated.h"
USTRUCT(BlueprintType)
struct FThisNewStructure : public FTableRowBase
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = test)
int32 SomeNumber;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = test)
FString SomeString;
};
.cpp:
#include "MyActor2.h"
然后编译成功。 我不得不关闭/重新打开VS和UE,以便编辑器了解新结构。
可能有点晚了,但我自己也遇到了这个问题。有时你会有一个自动抓取FTableRowBase的包含,但有时一个类没有回调它的标头。在这种情况下:
#pragma once
#include "Engine/DataTable.h"//this is where FTableRowBase is declared.
#include "TestCustomData.generated.h"
struct FFoo : FTableRowBase
{
GENERATED_USTRUCT_BODY()
public:
the rest of your class...
我希望这有帮助! :D
感谢您的帮助,我在同一教程中解决了相同的问题。显然,您不需要将TestCustomData重命名为MyActor2,您只需要在"GENERATED_USTRUCT_BODY(("之后添加"public:"行。
相关文章:
- 创建结构的数组时遇到分段错误
- 使用具有结构不完整类型错误的模板
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 导致Segmentation错误的结构中的矢量
- 编译器指出结构和 int 说明的错误 2059
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 在 C 函数中返回结构会导致分段错误
- C++ 结构错误"调用'erase'没有匹配函数
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 结构中的错误"Incomplete type is not allowed"
- 体系结构x86_64的未定义符号:链接器错误
- 在另一个结构中声明内部结构会导致错误:结构使用无效
- 如何编写一个错误结构,该结构可以包含不同的强键枚举作为错误代码
- 错误:结构的初始值设定项太多
- 带有结构和指针的程序错误(结构,C++)
- 错误:结构的正向声明
- 使用结构体作为参数:错误:结构体未定义
- 定义错误结构体中的枚举
- "Was not declared in this scope"错误结构定义。C++
- GCC中可能的错误:结构中的文字字符串类型