tolua和模板方法

时间:2011-12-21 14:15:22

标签: c++ binding lua

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

void addComponent<T>(IComponent*);

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

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

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