指向对象的指针。如何管理函数或过程中对象的真实引用并将其返回?

时间:2016-08-11 09:14:20

标签: function pointers arguments gambas

我需要维护一个对象引用数组,并将每个项目传递给函数来管理它。我知道我可以这样做:

Dim arrObjs As MyObject[]  
Dim refObj As MyObject

arrObjs.Add(New MyObject) 'First reference to the Object.  
refObj=arrObjs[0]         'Second reference to the same Object.  

我认为这是正确的,但是阅读Gambas对象模型文档,我读到当通过引用传递参数(ByRef)时,没有涉及指针。而是将值复制到函数内部,然后在函数完成后再次复制到函数外部。例如:

Sub manageObject(ByRef refObj As MyObject)  
    .....  
End  

通话时间:

manageObject(ByRef arrObjs[0])  

如何在程序中管理对象的真实引用?有类似的东西吗?

Dim obj As New MyObject        'Correct  
Dim objInstance As MyObject    'Correct  
Dim refObj as Pointer          'Correct  

refObj=varPtr(obj)             'NOT Correct, but i would like  
objInstance=Object@(refObj)    'NOT Correct, but i would like  

1 个答案:

答案 0 :(得分:0)

一旦您使用NEW创建了对象,就可以使用该对象的方法和读/写属性:

arrObjs[0].method()   
arrObjs[1].property=value

请参见object data type definition和带有array of objects的示例:
对象数组可以简单地由 public 数组共享。
使用 h 指针或引用时,您可以编写以下代码:

hinstance = arrObjs[0]

然后:

hinstance.method()