不知道是Unreal Runtime变严格了还是还是框架有变,官方视频4.09貌似就没有报错:不允许指向不完整的类型,可能是Unreal把导出的runtime给精简了,我用4.24两个Component都需要自己手动引用.h文件。
好在通过VS大概能确定需要引用哪个.h,不然我还要全网搜索太麻烦。
// SpawnVolumn.h
private:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Spawning",
meta = (AllowPrivateAccess = "true"))
class UBoxComponent* whereToSpawn;
// SpawnVolumn.cpp
FVector ASpawnVolumn::GetRandomPositionVolumn()
{
// 编译器报错:whereToSpawn不允许指针指向不完整的类类型
FVector SpawnOrigin = whereToSpawn->CalcBounds().Origin;
FVector SpawnExtend = whereToSpawn->GetScaledBoxExtent();
return UKismetMathLibrary::RandomPointInBoundingBox(SpawnOrigin, SpawnExtend);
}
class UBoxComponent其实我是不知道这个UBoxComponent定义在哪里,官方视频里也没有去引用某个.h文件,好在VS足够强大,右键‘转到定义’,VS会索引到几个UBoxComponent相关.h,一般引用文件在Engine下
需要手动写明引用头文件#include "Runtime/Engine/Classes/Components/BoxComponent.h"
后续一系列的“不允许指针指向不完整的类类型”报错都可以用这种方式解决。
原文:https://www.cnblogs.com/bylle/p/12683578.html