这几天在UE4中练习数据结构的时候遇到了一个问题,当时的场景是这样的。
应用场景在UE4中新建了一个ContainerCollection模块。
ContainerCollection模块中定义了一个FDoubleLinkList模板类(注意:模板类中的成员函数声明跟定义都要写在DoubleLinkList.h文件内)
template
class CONTAINERCOLLECTION_API FDoubleLinkList
{
/*实现*/
public:
/*其中的一个成员函数*/
int32 Append(ObjectType* Data)
{
/*实现*/
}
};在游戏主模块的Build.cs文件中正确的添加模块名。
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "ContainerCollection" });在游戏主模块的.Target.cs中正确的添加模块名。(xxxEditor.Target.cs也需要)
ExtraModuleNames.AddRange(new string[] { "ToolLibrary", "ContainerCollection" });随便在游戏主模块中的某个.h文件中定义一个C++类。我这里是在ToolLibraryGameModeBase.h中定义了一个测试类。
class TOOLLIBRARY_API FMyNode
{
public:
FMyNode(int32 _in):
value(_in)
{}
int32 value;
};我在ToolLibraryGameModeBase中声明一个FDoubleLinkList成员变量,正确引入头文件。然后再BeginPlay里调用一下Append的方法。
ToolLibraryGameModeBase.h文件
#include "CoreMinimal.h"#include "GameFramework/GameModeBase.h"#include "LinkList/DoubleLinkList.h"#include "ToolLibraryGameModeBase.generated.h"
UCLASS()
class TOOLLIBRARY_API AToolLibraryGameModeBase : public AGameModeBase
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
FDoubleLinkList listLink;
};
ToolLibraryGameModeBase.cpp文