c++ - tolua和模板方法

标签 c++ binding lua

我需要将一个简单的模板方法绑定(bind)到 LUA,比如

void addComponent<T>(IComponent*);

我正在使用 tolua 进行绑定(bind),但它不支持类/方法模板(tolua++ 支持类模板但不支持方法模板:))。有没有办法手动绑定(bind)这个方法?

提前致谢。

最佳答案

C++ 模板实际上并不存在于编译器之外。存在模板的实例化,但模板本身纯粹是编译时构造。

没有名为 void addComponent<T>(IComponent*); 的函数一个叫做void addComponent<int>(IComponent*)的函数或 void addComponent<float>(IComponent*)或您想要的任何特定类型。但是模板不是真正的函数。

您可以绑定(bind)一个模板的实例化,这是一个具体的函数。这就像在 toLua 中绑定(bind)任何自由函数一样。实例化的名称是 addComponent<TypeName>其中 TypeName是您要用来实例化它的具体类型的名称。

换句话说,你不能绑定(bind)addComponent的概念。这是为任何类型定义的。您可以绑定(bind)任何实际的 addComponent这是为特定类型定义的。

关于c++ - tolua和模板方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8591204/

相关文章:

c++ - 如何从 C API 在其自己的环境中执行不受信任的 Lua 文件

api - 如何在Lua中创建表,然后从C API添加值?

c++ - 如何将表从 Lua 传递到 C++?

c++ - C++ 中的 fork() 学习操作系统开发

binding - 具有 Angular2 数据绑定(bind)的 NativeScript 不适用于地理定位

javascript - knockout 对象的自定义绑定(bind)

performance - Lua优化内存

c# - EmguCV 3.0 中的 CvInvoke.ConvexityDefects()

c++ - 我用 Gstreamer MSVC 1.16.1 构建 opencv 3.4,现在 imread 和 VideoCapture 不起作用

java - Vaadin DateField 将空值保存到数据库