遇到问题如下:
书中的代码复制粘贴后,其中实例化的一行出错。
严重性 代码 说明 项目 文件 行 禁止显示状态 详细说明
错误(活动) E0322 不允许使用抽象类类型 “FTestCustomComponentSceneProxy” 的对象: MyProjectCPP C:\Users\Administrator\Documents\Unreal Projects\MyProjectCPP 4.25\Source\MyProjectCPP\Test\TestCustomComponent.cpp 46 纯虚拟 函数 “FPrimitiveSceneProxy::GetTypeHash” 没有强制替代项
解决方法:
参考链接:没有躲过的坑–抽象类不能实例化对象(但是你明明定义的不是抽象类)江南-一苇渡江
思路:
- 这篇文章提到了不能实例化的原因就是虚函数没有全部实现。报错的字面意思,GetTypeHash函数没有实现。
- 找到这个函数的位置,来自继承的FPrimitiveSceneProxy。
- 在正确的位置实现这个函数:
借鉴另一个虚函数的实现方法和放置位置
virtual SIZE_T GetTypeHash(void) const override
{
return SIZE_T();
}
结果:
编译,拖一个Actor到场景中,添加已有代码实现的组件