Unreal Engine 4 C++ UCLASS构造函数易出错分析
- Unreal Engine 4 C UCLASS构造函数易出错分析
- GENERATED_BODY
- GENERATED_UCLASS_BODY
在Unreal Engine 4的任意类中通常会见到两个宏:
- GENERATED_BODY()
- GENERATED_UCLASS_BODY()
在一篇教程中有时候会有这样的说法:
这个说法并不严谨,并没有完全解释UCLASS_BODY()和BODY()区别。
具体分析:
首先为什么有两个宏定义的区别,主要是考虑到,继承父类之后,在于是否需要对父类的东西有所改动,构造函数的初始化亦是如此。
下面来说明下两种方法的不同:
1.GENERATED_BODY()
如果定义的是GENERATED_BODY(),那么意味着我不需要使用父类的构造函数,也就是说,我不能直接使用父类的声明,但是,我需要去实现的时候,我就必须自己去声明,否则就会报错。
- MyCharacter.h
UCLASS() class MYCHARACTER_API AMyCharacter : public ACharacter { GENERATED_BODY() public: AMyCharacter(const FObjectInitializer& ObjectInitializer); };
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
然后就可以在CPP中实现自己声明的这个构造函数,编译通过。
- MyCharacter.cpp
AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { }
- 1
- 2
- 3
- 4
- 5
如果不去声明自己的构造函数,就会报错:
MyCharacter.cpp(7): error C2084: 函数“AMyCharacter::AMyCharacter(const FObjectInitializer &)”已有主体
MyCharacter.h(14): note: 参见“{ctor}”的前一个定义
1.GENERATED_UCLASS_BODY()
如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数。
- MyCharacter.h
UCLASS() class MYCHARACTER_API AMyCharacter : public ACharacter { GENERATED_UCLASS_BODY() };
- 1
- 2
- 3
- 4
- 5
那么在CPP文件中去实现,而不需要在H里面去声明,编译通过!
- MyCharacter.cpp
AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { }
- 1
- 2
- 3
- 4
- 5
如果还去声明自己的构造函数,就会报错:
UCLASS() class MYCHARACTER_API AMyCharacter : public ACharacter { GENERATED_UCLASS_BODY() public: AMyCharacter(const FObjectInitializer& ObjectInitializer); };
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
也就是这个最常见的错误。
error C2535: “AMyCharacter::AMyCharacter(const FObjectInitializer &)”: 已经定义或声明成员函数
note: 参见“AMyCharacter::AMyCharacter”的声明
完结..转自 http://blog.csdn.net/qq_20309931/article/details/52964391
转载于:https://www.cnblogs.com/huojiaoqingchun0123/p/7742345.html
Unreal Engine 4 C++ UCLASS构造函数易出错分析相关推荐
- Unreal Engine 4 学习总动员读书笔记(2)
Unreal Engine 4 学习总动员读书笔记(2) 参考<Unreal Engine 4 学习总动员>,之前已经将视频的操作一步步的完成,但并没有对知识点进行深入理解和提取,本章针对 ...
- UNREAL ENGINE 4.13 正式发布!
这次的版本带来了数百个虚幻引擎 4 的更新,包括来自 GitHub 的社区成员们提交的 145 个改进!感谢所有为虚幻引擎 4 添砖加瓦贡献的人们: alk3ovation, Allegorithmi ...
- Unreal Engine使用C++入门示例
转载自52VR 原文章链接http://www.52vr.com/article-639-1.html epic games宣布ue4免费使用之后,吸引了大批看好VR和AR前景的游戏开发者. 不过国内 ...
- Unreal Engine 4 学习总动员读书笔记
Unreal Engine 4 学习总动员读书笔记 参考<Unreal Engine 4 学习总动员>,按照里面的录制的视频一步一步的操作,并将操作的流程和关键截图保存下来,方便后面的再次 ...
- UNREAL ENGINE 4.12 正式发布!下载地址
UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社 ...
- 【新手必读】Unreal Engine 4 C++入门教程(上)
原文|<Unreal Engine 4 C++ Tutorial> 作者|Tommy Tran Feb 6 2018 | 翻译 开发游戏的老王 阅读时长|25分钟 内容难度|入门 在本教程 ...
- 【UE4官方文档翻译】Unreal Engine 4 For Unity Developers (针对Unity开发者的UE4)
------------------------------------------------------------------ 说明: 本翻译是参考.修正.整理后的文档.如有错误,请 ...
- Unreal Engine 4添加自定义Settings到项目设置
http://blog.csdn.net/shangguanwaner/article/details/50300349 Unreal Engine 4添加自定义Settings到项目设置 在开发的过 ...
- 从Unreal Engine 3到Unreal Engine 4
http://blog.csdn.net/neil3d/article/details/46723589 Unreal Engine 4发布好长好长时间了,直到最近才有时间仔细去看一下. TimSwe ...
- Unreal Engine C++ 入门01
1.UMG UMG 向关卡增加UI控件 比如按钮和文本之类 打开unreal engine 我安装的是 C++开发的话有同时安装vs2019 VS2019的话安装有注意组件问题,不然创建会报错. wi ...
最新文章
- Redis6安装配置集群cluster以及集群宕机注意事项
- 内存溢出和内存泄漏的区别、产生原因以及解决方案
- 【Android】窗口构成 应用窗口+系统窗口
- MySQL命令之mysqlhotcopy -- 热备份
- 《React Native跨平台移动应用开发》PDF电子书分享
- tmpfiles.d导致的unix:///tmp/supervisor.sock no such file坑(待续)
- 用python写WordCount的MapReduce代码
- 这些年,这些ACM大佬-施韩原访谈
- -XX:NewRatio 命令
- 《非线性成长》阅读笔记
- 数值计算与MATLAB微积分
- ICPR 2022 | 多模态字幕识别竞赛正式启动!
- .obj文件格式与.mtl文件格式(转)
- 关于我自己 a propos de moi
- 企业遇到3C审厂不符合项应该如何整改?
- mysql如何查询昨天的数据
- Tomoyo Fighter - Perfect 界面汉化+修改器
- AI人工智能会取代项目经理吗?
- GJB5000A与CMMI的区别与共性
- Mybatis使用教程
热门文章
- 张亚勤新作《变革中的思索》谈高科技人才管理
- 末日帝国——Agile公司的困境 (5)
- 21 意境级讲解 共指消解的方法
- 5.10 Memory Networks 记忆网络的应用与方法
- 计算机网络工程安装,一种计算机网络工程用施工平台的制作方法
- linux主备dns切换时间,linux下主从DNS配置相关知识(二)
- matlab邻域平均,数字图像处理邻域平均法滤波实验报告matlab实现
- L1-050 倒数第N个字符串 (15 分)—团体程序设计天梯赛
- SQlite数据库框架:LitePal
- vmware虚拟机挂载Windows磁盘的两种方法