我需要将一个简单的模板方法绑定到LUA,比如
void addComponent<T>(IComponent*);
我正在使用tolua来进行绑定,但它不支持类/方法模板(tolua ++支持类模板,但不支持方法模板:))。有没有办法手动绑定这个方法?
提前致谢。
答案 0 :(得分:3)
C ++模板实际上并不存在于编译器之外。 模板的实例化存在,但模板本身纯粹是编译时构造。
没有名为void addComponent<T>(IComponent*);
的函数 是一个名为void addComponent<int>(IComponent*)
或void addComponent<float>(IComponent*)
的函数,或者是您想要的任何特定类型。但模板不是真正的功能。
您可以绑定模板的实例化,这是一个具体的功能。这就像绑定toLua中的任何自由函数一样。实例化的名称是addComponent<TypeName>
,其中TypeName
是要用它实例化的具体类型的名称。
换句话说,你不能绑定为任何类型定义的addComponent
概念。您可以绑定为特定类型定义的任何实际addComponent
。