2017-08-01 156 views
0

我正在关注有关CSV表条目的Packt教程。本教程需要我一)创建一个新的演员类,B)命名TestCustomData和C)用下面的代码替换新生成的TestCustomData.h的内容:UE4数据表结构错误

#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) 

我是相当新的在UE4的StackOverflow和C++,和任何帮助,将不胜感激。任何反馈,以改善我的问题也欢迎!在此先感谢您的帮助。

回答

0

我被困在同一地点和这个固定: 我命名资产“MyActor2”和Strucure“ThisNewStructure”所以有一些小的差异...

我认为这是basicly包括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" 

然后它编译成功。 我不得不做一些关闭/重新开放的编辑器来了解新结构。

+0

这并没有起作用,但我已经回去调整它,现在似乎编译。 VS中有几个小错误,但在UE4中没有问题。这很奇怪 - 但我没有抱怨。我只希望教程更清晰 - 如果没有额外的帮助,很难排除故障。谢谢。 –

+0

据我所知,当你在VS中编译时,得到错误可能是正常的。您应该始终从UE编辑器内进行编译。 – niltathra

0

乍一看,似乎描述FTableRowBase头文件没有被包括在内。你在输出中看到的错误 - “缺少类型说明符”等,表明你的编译器不知道FTableRowBase是什么,所以它不能从它派生出来。包括描述父类的头文件应该解决这个问题。

+0

在这种情况下,我不确定头部到底是什么。正如本教程中所述,上述代码直接从本教程复制并粘贴 - 无需编辑任何内容。额外的头文件是什么样的?我没有被要求链接到任何其他文件,或创建文件引用。 –

0

它可能是一个有点晚,但我只是碰到了这个自己。有时你会有一个包含自动抓取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