2017-04-27 3 views
0

私はcocos2dxでluaを使用しています。 テンプレート関数は次のように、あります:テンプレート関数バインディングlua

class ClassA 
{ 
public: 
    template<class T1, class T2> 
    static ClassA* createClassA(T1 t1, T2 t2); 
} 

は、どのように私はLuaのためにこの機能を結合することができますか?

ありがとうございます。

答えて

1

あなたはできません。実際のLua引数型をチェックする単一の静的関数int createClassA(lua_State* L);をバインドし、特定のテンプレートメソッドを呼び出さなければなりません。ネイティブコードには何らかのスイッチが必要であり、可能なすべてのケースがネイティブホストでインスタンス化されるべきであることを意味します。

+0

テンプレートインプリメンテーションをcppからluaにエクスポートする方法がないことを意味しますか? –

+0

Luaには関数シグネチャの概念はありません。単なる値です。したがって、異なるテンプレートのインスタンス化のために別々のLua関数を必要とするか、Lua引数をチェックして正確なインスタンス化を選択する必要があります。いずれにしても、それはあなたの責任(またはあなたのC++バインディングライブラリ/フレームワーク)ですが、Luaはここで助けません。 – Vlad

+0

ありがとう "、またはLuaの引数をチェックすることで正確なインスタンスを選択する必要があります"もしluaの引数がユーザ型であれば、そこには何かがありますか? –

関連する問題