メインコンテンツ

C++ 言語の不透明なオブジェクトの受け渡し

不透明なオブジェクトには、MATLAB® が認識できるプロパティやメソッドがありません。これらのオブジェクトは、その処理方法が実装されている、関連する関数に渡すことができます。不透明なオブジェクトを返した関数の使用方法の詳細については、当該関数のドキュメンテーションを参照してください。

この例を実行するために、不透明なオブジェクト例のインターフェイスのビルドの説明に従って libopaque という名前の MATLAB インターフェイスを生成します。

インターフェイスのヘルプの表示

opaque.hpp のインターフェイスがあると仮定します。ライブラリのヘルプを表示すると、SessionHandle クラスが opaque 型であることがわかります。

help clib.libopaque
Classes 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.

ライブラリ内の関数のヘルプを表示します。getHandleSessionHandle を返し、closeHandleSessionHandle を入力として受け取ります。

help clib.libopaque.getHandle
getHandle -  clib.libopaque.getHandle Representation of C++ function getHandle.

  RetVal = clib.libopaque.getHandle
    Output Arguments
      RetVal         clib.libopaque.SessionHandle  
help clib.libopaque.closeHandle
closeHandle -  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++ ヘッダー ファイルでは、SessionHandletypedef 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 インターフェイス libnameMATLAB ヘルプ

ヘッダー ファイル opaque.hpp

clib.libopaque

>> help clib.libopaque

参考

トピック