Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 模板函数绑定lua_Templates_Lua_Cocos2d X - Fatal编程技术网

Templates 模板函数绑定lua

Templates 模板函数绑定lua,templates,lua,cocos2d-x,Templates,Lua,Cocos2d X,我在cocos2dx中使用lua。 有一个模板函数,如: class ClassA { public: template<class T1, class T2> static ClassA* createClassA(T1 t1, T2 t2); } A类 { 公众: 模板 静态类A*创建类A(T1 T1,T2 T2); } 如何将此函数绑定到lua 提前谢谢,你不能。您必须绑定单个静态函数intcreateclassa(lua_State*L)将检查实际的Lua

我在cocos2dx中使用lua。 有一个模板函数,如:

class ClassA
{
public:
    template<class T1, class T2>
    static ClassA* createClassA(T1 t1, T2 t2);
}
A类
{
公众:
模板
静态类A*创建类A(T1 T1,T2 T2);
}
如何将此函数绑定到lua


提前谢谢,

你不能。您必须绑定单个静态函数
intcreateclassa(lua_State*L)将检查实际的Lua参数类型,并调用特定的模板方法。意味着本机代码中必须有某种类型的转换,所有可能的情况都应该在本机主机中实例化。

您的意思是没有办法将模板实现从cpp导出到lua?lua没有函数签名的概念。它只是一个单一的值。因此,您需要为不同的模板实例化使用单独的Lua函数,或者必须通过检查Lua参数来选择确切的实例化。无论是哪种方式,都是你的责任(或者C++绑定库/框架),Lua不能帮助。谢谢,“或者你必须通过检查LUA参数来选择精确的实例化”如果LUA参数是用户类型,那么……这些用户类型必须以允许区分类型的方式创建。它可能是用户类型值中已知偏移量处的某个类型id字段,或者在元表名称/id或方法上达成了某种一致。如果用户类型不是由您的代码创建的,您可能不知道最初是什么类型,因此无法选择准确的模板实例。@I-V,绑定代码是用模板实现的,因此在托管应用程序的同时生成/编译。无论如何,问题不在本机端。Lua不关心参数类型,因为参数没有类型,只有绑定到参数变量的实际值才有类型。所以Lua不能自己选择确切的本机函数,它需要有人来完成这项工作。tolua++生成多个绑定,但在Lua端,必须显式调用不同的函数。即使是tolua++目前也无法绑定模板函数。