C++ 言語の不透明なオブジェクトの受け渡し
不透明なオブジェクトには、MATLAB® が認識できるプロパティやメソッドがありません。これらのオブジェクトは、その処理方法が実装されている、関連する関数に渡すことができます。不透明なオブジェクトを返した関数の使用方法の詳細については、当該関数のドキュメンテーションを参照してください。
この例を実行するために、不透明なオブジェクト例のインターフェイスのビルドの説明に従って libopaque という名前の MATLAB インターフェイスを生成します。
インターフェイスのヘルプの表示
opaque.hpp のインターフェイスがあると仮定します。ライブラリのヘルプを表示すると、SessionHandle クラスが opaque 型であることがわかります。
help clib.libopaqueClasses contained in clib.libopaque: SessionHandle - clib.libopaque.SessionHandle C++ opaque type. Functions contained in clib.libopaque: closeHandle - clib.libopaque.closeHandle Representation of C++ function closeHandle. getHandle - clib.libopaque.getHandle Representation of C++ function getHandle.
ライブラリ内の関数のヘルプを表示します。getHandle は SessionHandle を返し、closeHandle は SessionHandle を入力として受け取ります。
help clib.libopaque.getHandlegetHandle - clib.libopaque.getHandle Representation of C++ function getHandle.
RetVal = clib.libopaque.getHandle
Output Arguments
RetVal clib.libopaque.SessionHandle help clib.libopaque.closeHandlecloseHandle - clib.libopaque.closeHandle Representation of C++ function closeHandle.
clib.libopaque.closeHandle(SessionHandle)
Input Arguments
SessionHandle clib.libopaque.SessionHandle MATLAB での関数の呼び出し
getHandle を呼び出して SessionHandle オブジェクトを作成します。
sHandle = clib.libopaque.getHandle
sHandle =
SessionHandle is an opaque object.MATLAB の sHandle 変数を closeHandle 関数に渡します。
clib.libopaque.closeHandle(sHandle)
不透明なオブジェクト例のインターフェイスのビルド
次の C++ ヘッダー ファイルでは、SessionHandle は typedef void* として定義された opaque 型です。
typedef void* SessionHandle;
SessionHandle getHandle(){
int* a = new int(1);
return a;
}
void closeHandle(SessionHandle h){
int* a = (int*)(h);
delete a;
}このコードを opaque.hpp という名前のヘッダー ファイルに保存し、ヘッダー専用の HPP ファイルの説明に従って libopaque という名前の MATLAB インターフェイスを生成します。
| ライブラリ アーティファクト | MATLAB インターフェイス libname | MATLAB ヘルプ |
|---|---|---|
ヘッダー ファイル |
|
|