UE4 C++ UCLASS构造函数易出错分析
网上的错误说法,并没有完全解释UCLASS_BODY()和BODY()区别。
以上两张截图分别是定义了GENERATED_BODY()和GENERATED_UCLASS_BODY()。
具体分析:
首先为什么有两个宏定义的区别,主要是考虑到,继承父类之后,在于是否需要对父类的东西有所改动,构造函数的初始化亦是如此。
一、GENERATED_BODY()
如果定义的是GENERATED_BODY(),那么意味着我不需要使用父类的构造函数,也就是说,我不能直接使用父类的声明,但是,我需要去实现的时候,我就必须自己去声明,否则就会报错。
然后就可以在CPP中实现自己声明的这个构造函数,编译通过。
如果不去声明自己的构造函数,就会报错:
二、GENERATED_UCLASS_BODY()
如果定义的是GENERATED_UCLASS_BODY(),那么意味着我使用父类的构造函数,也就是说,我不需要为自己声明构造函数,直接去实现父类声明那个构造函数。
那么在CPP文件中去实现,而不需要在H里面去声明,编译通过!
如果还去声明自己的构造函数,就会报错:
也就是这个最常见的错误。
完结。
也就是这个最常见的错误。
完结。
转载于:https://blog.51cto.com/13638120/2166683