回答編集履歴

2

binding libraryを使用した場合の例を追加

2017/02/03 20:25

投稿

satoren
satoren

スコア109

test CHANGED
@@ -136,7 +136,7 @@
136
136
 
137
137
 
138
138
 
139
- //登録したインスタンスのメンバーを呼んでみる
139
+ //登録したインスタンスのメンバーをLua上で呼んでみる
140
140
 
141
141
  luaL_dostring(L, "testinstance:set(4)");
142
142
 
@@ -162,4 +162,32 @@
162
162
 
163
163
 
164
164
 
165
- たくさんありますが、自身binding libraryを作成して公開して立場ので、お勧めは言えません
165
+ 例えばの作成しているbinding libraryですと、以下のように記述すことで同じようことが行えま
166
+
167
+ ```C++
168
+
169
+ kaguya::State L;
170
+
171
+ //クラスの登録
172
+
173
+ L["TestClass"].setClass(kaguya::UserdataMetatable<TestClass>()
174
+
175
+ .addFunction("get", &TestClass::get)
176
+
177
+ .addFunction("set", &TestClass::set)
178
+
179
+ );
180
+
181
+ //インスタンスの登録
182
+
183
+ L["testinstance"] = TestClass();
184
+
185
+
186
+
187
+ //登録したインスタンスのメンバーをLua上で呼んでみる
188
+
189
+ L.dostring(L, "testinstance:set(4)");
190
+
191
+ L.dostring(L, "assert(4 == testinstance:get())");
192
+
193
+ ```

1

誤字の修正

2017/02/03 20:25

投稿

satoren
satoren

スコア109

test CHANGED
@@ -14,9 +14,29 @@
14
14
 
15
15
 
16
16
 
17
- ``int get();`` ``void set(int);``をメンバー持つTestClassを登録するコード例を以下に示します(lambdaやautoなどC++11の機能を使用しています。)
17
+ 例としてシンプルなメンバー持つTestClassを登録するコード例を以下に示します(lambdaやautoなどC++11の機能を使用しています。)
18
18
 
19
19
  ```C++
20
+
21
+
22
+
23
+ class TestClass
24
+
25
+ {
26
+
27
+ public:
28
+
29
+ int get(){return m;}
30
+
31
+ void set(int v){m = v;}
32
+
33
+ private:
34
+
35
+ int m=0;
36
+
37
+ };
38
+
39
+
20
40
 
21
41
  lua_State *L = luaL_newstate(); luaL_openlibs(L);
22
42
 
@@ -142,4 +162,4 @@
142
162
 
143
163
 
144
164
 
145
- 私自身binding libraryを作成して公開してる立場なので、お勧めは言えません。
165
+ たくさんありますが、私自身binding libraryを作成して公開してる立場なので、お勧めは言えません。