lua支援傳引用啦! 返回int 卻出錯了

2021-10-09 17:30:19 字數 2178 閱讀 5621

在c++中返回指標給lua還是返回引用給lua,本質一樣!

如何在lua裡面動態申請變數,類!

example.h

#include

struct haha

;class

vector

;void

ref(vector& v)

;void

val(vector v)

;

#include

"example.h"

#include

#include

using

namespace std;

vector::

vector

(int a,

int b)

void vector::

display()

double vector::

abs(

)haha& vector::

return_ref()

;void

ref(vector& v)

void

val(vector v)

%module example

%struct haha

;class

vector

;void

ref(vector& v)

;void

val(vector v)

;

swig -c++ -lua example.i

> require "example"

table:

00000000001995a0 .\example.dll

> a=example.

vector(12

,23)> example.

ref(a)

> a.x

12345.0

> example.

val(a)

> a.x

12345.0

傳出來指標也可以像用引用似的訪問那個元素啊!

> require "example"

table:

0000000000199ae0 .\example.dll

> a=example.

vector(12

,23)> b=a:

return_ref()

> b

> b.a

1.0

#include

struct haha

;class

vector

;void

ref(vector& v)

;void

val(vector v)

;

#include

"example.h"

#include

#include

using

namespace std;

vector::

vector

(int a,

int b)

void vector::

display()

double vector::

abs(

)int

& vector::

return_ref()

;void

ref(vector& v)

void

val(vector v)

%include cpointer.i

%pointer_functions

(int

, intp)

;

a = example.

new_intp()

example.

intp_assign

(a,37

)r = example.

intp_value

(a)example.

delete_intp

(a)

傳值 傳引用 傳指標

收藏 相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資...

傳值 傳引用 傳指標

相關概念 c 三種傳遞引數方式 傳引數的值 稱值傳遞,簡稱傳值 傳引數的位址 稱位址傳遞,簡稱為傳址 和引用傳遞 稱為傳引用 相應的函式傳值呼叫,傳址呼叫和傳引用呼叫 形參 實參 函式定義時參數列中的引數稱為形式引數,簡稱形參 函式呼叫時參數列中的引數稱為實際引數,簡稱實參。實參和形參之間的資料傳遞...

傳值 傳指標 傳引用

c語言的規則很簡單 所有的引數都是傳值呼叫 在這句話的基礎上,我們來分析值傳遞 指標傳遞 引用傳遞的區別。一 值傳遞 值傳遞,這與c函式的性質有關。c函式的所有引數均以 傳值呼叫 方式進行傳遞,這意味著函式值將獲得引數值的乙份拷貝,函式可以放心修改這個拷貝值,而不必擔心會修改呼叫程式實際傳給他的引數...