我需要将一个简单的模板方法绑定(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/