XMS のほとんどの C++ クラスには getHandle() メソッドがあります。C++ アプリケーションはオブジェクトの getHandle() メソッドを呼び出し、C アプリケーションがオブジェクトへアクセスするときに使用するハンドルを取得できます。C++ アプリケーションは C API で関数を呼び出し、このハンドルを使用してオブジェクトにアクセスできます。
#include <xms.hpp> using namespace std; int main(int argc, char *argv[]) { xms::ConnectionFactory cf; xms::Connection conn; xmsHConn hConn; cf.setIntProperty(XMSC_CONNECTION_TYPE, XMSC_CT_RTT); cf.setIntProperty(XMSC_RTT_CONNECTION_PROTOCOL, XMSC_RTT_CP_TCP); cf.setStringProperty(XMSC_RTT_HOST_NAME, "localhost"); cf.setIntProperty(XMSC_RTT_PORT, 1506); conn = cf.createConnection(); // Retrieve the handle for the connection. hConn = conn.getHandle(); // Using the retrieved handle, call a C API function. xmsConnStart(hConn, NULL); // Other code here return(0); }
C++ アプリケーションはオブジェクトのハンドルを使用し、適切な C API 関数を呼び出してオブジェクトを閉じるかまたは削除します。ただし、C++ アプリケーションがこの方法でオブジェクトを閉じるかまたは削除する場合、アプリケーションは今後 C++ API を使用してオブジェクトを使用することができなくなります。
C++ アプリケーションが C API でのみ使用可能な関数を使用する必要がある場合は、C API を使用できると便利です。参照によりストリングまたはバイト配列を戻す C 関数で説明する関数は、このような関数の例です。