Lua与C++之间的参数转换的实现原理
2.1 Lua传给C++的参数C++怎么转换成C++属性的
PreCall中将Lua参数转换成C++参数,主要发生在下列代码中
CleanupFlags[i] = Property->SetValue(L, Params, FirstParamIndex + ParamIndex, false);
Property->SetValue传入的参数是拿到的Lua参数,当他被放到缓存区的时候为什么成了C++类型
可以看到SetValue调用到的是,虚方法SetValueInternal
首先在PropertyDesc中存储FProperty的时候,用的是联合,所以某一个属性,最终会成为FProperty或者继承FProperty的特例FProperty,然后虚方法SetValueInternal会在每一个特例FProperty中实现,本例中传进来是Lua String的时候,会走到FStringPropertyDesc的SetValueInternal实现,如下二图