【问题标题】:How to create pointers for subclasses in C++? [closed]如何在 C++ 中为子类创建指针? [关闭]
【发布时间】:2015-04-06 17:47:23
【问题描述】:

我在指向 API 的子类时有点麻烦。

这是我想要做的原始帕斯卡代码:

  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);

但是编译时总是出错,我该怎么办? 从现在开始,感谢您的建议。

【问题讨论】:

  • 你得到什么错误?省略它不是很有帮助。
  • 这是什么语言? C++ 语言中没有:= 运算符。也许是 BNF?
  • 正如我在问题中所说,第一个和第二个sn-ps原来是Pascal

标签: c++ pointers subclass c++builder-xe7 appmethod


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多