[UE4插件使用-问题合集-02] error C4458: declaration of 'ModuleIndex' hides class member 函数参数使用的参数名字与所在类中的某个变量名字重名了

error C4458 函数参数名与所在类的变量名重名

问题描述:

 

 

 

解决过程:

  1. 我这边报错的那行是宏定义,所以要找到宏定义处,是放到另一文件中的,可以看到这个宏定义是定义了函数的:

 

 

  1. 可以看到这个函数形参有一个是"ModuleIndex",没错,就是它与类中某个变量同名的。类中的那个同名变量我这里就不找了,你们知道就行了。实际上这样的C++语法是没有问题的,内层作用域中与外层作用域中同名的变量会隐藏外层的同名变量,但可能同样是版本的原因,新版本的UE4(我这里是4.24)对于这种情况视为错误,不允许编译通过(有了解详细情况的可以留言告诉我)。

  2. 知道原因就好办了,我们只要更改这个函数的ModuleIndex形参名以及函数中使用到它的地方就好了(Agreement.ModuleIndex不用改)。我改成了"ModuleIndex1":

 

 

结果:

新版本的UE4可能不允许嵌套作用域中的重名变量,会报error C4458,更改变量名即可。

posted @ 2020-04-08 11:18  JFor  阅读(2205)  评论(0编辑  收藏  举报