2011-04-23 13 views
1

私が解決したい問題は、あなたのほとんどにとっては簡単なものになると思います:) というメンバ関数を持つクラスNodeがあるとします。私はクラスのノードの変数を定義することができるようにしたいと思います。そして、setPosition()関数を使ってLuaを作ることができます。 私はLuaがC++ではなくC++クラスに問題があることを知っていますが、それは達成可能であることも知っています。luaスクリプトからC++クラスメンバー関数にアクセスするにはどうしたらいいですか?

答えて

2

これにはLuabindを使用します。これにより、C++クラスを簡単にバインドして、Luaで作成、アクセス、および変更できるようになります。 Luaは見えるようにあなたはまた、バインディングを作ることができる

node = Node() 
node:setPosition(x, y, z) 

module(L) [ 
    class_<Node> 
     .def(constructor<>) 
     .def("setPosition", &Node::setPosition) 
]; 

その後、あなたはLuaのでこれを言うことができるだろう:あなたはC++で記述します。コードは、おおよそ次のようになります。もう少し自然なもので、次のようなものをサポートすることができます:

node1 = Node(x, y, z) 
node2 = Node() 
node2.position = { x, y, z } 
+0

お返事ありがとうございます。私はすでにルアビンドをビルドしてプロジェクトに組み込んでいますが、問題は私が "ゲームエンジン"をC++で持っていることです。私はRenderSystem(変数)をすでに定義していて、アクセスできず、 x = RenderSystem-> createBody(); '私はすでにLuabindでクラスを公開することはできますが、どうすれば実現できますか? – Patryk

+0

次に、RenderSystemクラスとそのcreateBody関数にバインディング(おそらくLuabindを使用)を作成し、それをLuaから呼び出して結果に作用させる必要があります。あるいは、私はあなたが探しているものを誤解していますか? –

関連する問題