指点成金-最美分享吧

登录

lua 如何实现 C++ 里的 map

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了lua 如何实现 C++ 里的 map相关的知识,希望对你有一定的参考价值。

我是这样定义的:

lb_infos =

index,
lb_info =

id = 0,
model = 0



我这么用,却出错了:

lb_infos[i]["id"] = sqlid

用lua封装成类似c++中map的功能方法:
实现代码如下:
1、stl_map.lua //创建一个stl_map

2、map = //初始化为空
3、创建一个map
function map:new()
local object =

setmetatable(object, self)
self.__index = self

--用一个table来保存key
self.__keyList =

return object
end
4、使用:
插入元素[如果已存在该key,则不做改动,和STL一致]
function map:insert(key, value)
if(self[key] == nil) then
self[key] = value
table.insert(self.__keyList, key)
end
return self
end
参考技术A lb_infos =

[0] =


id = 0,
model = 0


本回答被提问者和网友采纳

UE4 Unlua源码解析8 - Lua与C++之间的参数转换的实现原理

Lua与C++之间的参数转换的实现原理

          • 2.1 Lua传给C++的参数C++怎么转换成C++属性的
          • 2.2 C++返回给Lua的参数或者UObjct对象,怎么在Lua端自动变成Lua对象的

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,然后虚方法Se

以上是关于lua 如何实现 C++ 里的 map的主要内容,如果未能解决你的问题,请参考以下文章