在C ++ / Unreal Engine 4中访问不同类中的静态变量

问题描述 投票:0回答:1

我有一个在头文件中声明的静态变量,并在相应的cpp文件中初始化。我想要做的是从另一个cpp文件访问该变量。这是代码:

AkOcclusionObstructionService.h

class AkOcclusionObstructionService
{
public:

    static float OcclusionFadeRate;
    ...
}

AkOcclusionObstructionService.cpp

...
float AkOcclusionObstructionService::OcclusionFadeRate = 3.0f;
...

MyBlueprintFunctionLibrary.cpp

#include "MyBlueprintFunctionLibrary.h"
#include "AkOcclusionObstructionService.h"

void UMyBlueprintFunctionLibrary::ChangeWwiseFadeRate(float rate)
{
    AkOcclusionObstructionService::OcclusionFadeRate = rate;
}

当我尝试构建Visual Studio时给出了这个错误:

“LNK2001未解析的外部符号”public:static float AkOcclusionObstructionService :: OcclusionFadeRate“(?OcclusionFadeRate @ AkOcclusionObstructionService @@ 2MA)”。

看起来MyBlueprintFunctionLibrary看不到AkOcclusionObstructionService cpp文件中的OcclusionFadeRate变量。

任何人都知道发生了什么?

提前致谢!

编辑:其他链接/建筑信息:

要使“AkOcclusionObstructionService.h”文件对“MyBlueprintFunctionLibrary.cpp”文件可见,我们必须向“TestFadeRateWwise2.build.cs”添加一些内容(TestFadeRateWwise2是项目名称)。具体来说,我们不得不在这一行添加“AKAUDIO”:

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AKAUDIO" });

这是我们做过的唯一“非标准”事情。

c++ static unreal-engine4
1个回答
0
投票

根据您发布的代码很难判断,但我认为问题是因为下面的行在函数内:

float AkOcclusionObstructionService::OcclusionFadeRate = 3.0f;

将该行移到函数外部并再次尝试。你可以看看这个问题:How to access static members of a class?

© www.soinside.com 2019 - 2024. All rights reserved.