2015-04-06 45 views
0

當我指向一個API的子類時,我遇到了一些麻煩。如何在C++中爲子類創建指針?

這裏是什麼我試圖做原來的PASCAL代碼:

Adapter:=TJBluetoothAdapter.JavaClass.getDefaultAdapter; 
    remoteDevice:=Adapter.getRemoteDevice(stringtojstring(targetMACAddress)); 
    sock:=remoteDevice.createRfcommSocketToServiceRecord(UID); 

減少它的版本:

sock:=TJBluetoothAdapter.JavaClass.getDefaultAdapter.getRemoteDevice(stringtojstring(targetMACAddress)).createRfcommSocketToServiceRecord(UID); 

這裏我有什麼,我已經嘗試過的事情:

_di_JBluetoothSocket* sock = new _di_JBluetoothSocket; 
    sock = &TJBluetoothAdapter::JavaClass->getDefaultAdapter()->getRemoteDevice(StringToJString(targetMACAddress))->createRfcommSocketToServiceRecord(uid); 

和:

TJBluetoothAdapter::JavaClass->getDefaultAdapter()->getRemoteDevice(StringToJString(targetMACAddress))->createRfcommSocketToServiceRecord(uid)* sock; 

和:

TJBluetoothAdapter* sock; 
    sock = TJBluetoothAdapter::JavaClass->getDefaultAdapter()->getRemoteDevice(StringToJString(targetMACAddress))->createRfcommSocketToServiceRecord(uid); 

compilling時,不過,我總是得到錯誤,我應該怎麼辦? 從現在起,感謝您的建議。

+1

你什麼錯誤?忽略這一點並不是很有幫助。 – tadman

+0

這是哪一種語言?在C++語言中沒有':='操作符。也許BNF? –

+0

正如我在問題中所說的,第一個和第二個片段最初是Pascal – mauroaraujo

回答

1

您聲明正確地顯示您的sock變量。不要聲明類型爲_di_...的指針。它已經是一個指針(更具體地說,它是一個System::DelphiInterface類的typedef,它是Delphi接口指針的C++ smart pointer包裝器)。

_di_JBluetoothAdapter Adapter = TJBluetoothAdapter::JavaClass->getDefaultAdapter(); 
_di_JBluetoothDevice remoteDevice = Adapter->getRemoteDevice(StringToJString(targetMACAddress)); 
_di_JBluetoothSocket sock = remoteDevice->createRfcommSocketToServiceRecord(UID); 

這大致相當於此:

JBluetoothAdapter *Adapter = TJBluetoothAdapter::JavaClass->getDefaultAdapter(); 
Adapter->AddRef(); 

JBluetoothDevice *remoteDevice = Adapter->getRemoteDevice(StringToJString(targetMACAddress)); 
remoteDevice->AddRef(); 

JBluetoothSocket *sock = remoteDevice->createRfcommSocketToServiceRecord(UID); 
sock->AddRef(); 

... 

sock->_Release(); 
remoteDevice->_Release(); 
Adapter->_Release();