我正在学习有关CSV表条目的Packt教程。本教程要求我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:\unreal\ue4 assignments\ue4_projectrpg\source\ue4_projectrpg\TestCustomData.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:\Unreal\UE4 Assignments\UE4_ProjectRPG\UE4_ProjectRPG.uproject" "F:\Unreal\UE4 Assignments\UE4_ProjectRPG\Intermediate\Build\Win64\UE4_ProjectRPGEditor\Development\UE4_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:\unreal\ue4 assignments\ue4_projectrpg\source\ue4_projectrpg\TestCustomData.h(6) : error C3646: 'Super': unknown override specifier
Error f:\unreal\ue4 assignments\ue4_projectrpg\source\ue4_projectrpg\TestCustomData.h(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error F:\Unreal\UE4 Assignments\UE4_ProjectRPG\Source\UE4_ProjectRPG\TestCustomData.h(5) : error C2504: 'FTableRowBase': base class undefined
Error F:\Unreal\UE4 Assignments\UE4_ProjectRPG\Source\UE4_ProjectRPG\TestCustomData.h(6) : error C3646: 'Super': unknown override specifier
Error F:\Unreal\UE4 Assignments\UE4_ProjectRPG\Source\UE4_ProjectRPG\TestCustomData.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:\Unreal\UE4 Assignments\UE4_ProjectRPG\Binaries\Win64\UE4Editor-UE4_ProjectRPG-3031.dll
Info Total build time: 6.88 seconds (Local executor: 0.00 seconds)我对StackOverflow和C++在UE4方面相当陌生,如果能提供任何帮助,我们将不胜感激。任何反馈意见,以改善我的问题也是欢迎的!提前谢谢你的帮助。
发布于 2017-08-06 19:54:36
我被困在同一个地方,这个问题解决了:我把资产命名为"MyActor2“和结构"ThisNewStructure”,所以有一些小的区别。
我认为基本包括Datatable.h和“公众”,这就成功了。
头文件:
#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的编辑器,以了解新的结构。
发布于 2017-09-13 03:32:03
可能有点晚了,但我自己也碰上了。有时候你会有一个自动抓取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...我希望这能帮上忙!
发布于 2018-03-30 22:26:57
谢谢你的帮助,我在同一个教程中解决了同样的问题。显然,您不需要将TestCustomData重命名为MyActor2,只需在"GENERATED_USTRUCT_BODY()“之后添加"public:”行。
https://stackoverflow.com/questions/45447012
复制相似问题