C/C++ サポートに関する制限
C++98 機能およびよく使用される C++11 機能に基づく 64 ビットのコンパイル済みライブラリに対し、MATLAB® インターフェイスを作成することができます。ただし、ライブラリに以下のデータ型または言語機能が含まれている場合、この機能はライブラリに対する MATLAB インターフェイスに含められません。ラッパー ヘッダー ファイルを作成することにより、この機能を含めることができる場合があります。詳細については、C++ の制限を回避する例を参照してください。
未サポートのデータ型
サイズが 64 ビットより大きいすべての型 (
long doubleなど)ポインターへの参照 (例:
int*&)std::stringのポインターまたは配列列挙型へのポインターまたは参照
クラス オブジェクトへのポインターのベクトル (
std::vector<Myclass*>など)参照データ メンバー
void*データ メンバー多次元データ メンバーの配列
static データ メンバーの変更
**ポインター。ただし、次の例外があります。MATLAB は、
char**型をサポートします。MATLAB は、関数またはメソッド パラメーターのタイプとして使用されるカスタム クラスへの
**ポインターをサポートします。MATLAB は、関数またはメソッド パラメーターのタイプとして使用される
void**をサポートします。
マルチレベル ポインター (
など)type***C 関数ポインター、および関数の戻り値の型またはデータ メンバーとしての
std::function。また、C 関数ポインターへの入力、またはstd::functionパラメーターとして MATLAB 関数を渡すこともできません。インスタンス化の不完全な、またはインスタンス化のないクラス テンプレート
unionstd名前空間で定義される型。ただし、サポートされている次の型は除きます。std::stringstd::wstringstd::u16stringstd::u32stringstd::vectorstd::shared_ptrstd::functionstd::complex
サポートされていない型についてのメッセージ
ライブラリでこれらのデータ型が使用されている場合、ライブラリに対する MATLAB インターフェイスにその機能は含まれず、MATLAB は以下のようなメッセージを表示します。
Did not add member 'methodName' to class 'ClassName' at HeaderFile.h:290. 'long double' is not a supported type.
これらのメッセージを表示するには、関数 clibgen.generateLibraryDefinition または関数 clibgen.buildInterface で Verbose オプションを使用します。
サポートされていない言語機能
moveコンストラクターC++ 演算子のオーバーロード
名前のない名前空間とクラス
プリプロセッサ命令 (マクロ)
グローバル変数
可変個引数関数
インスタンス化の不完全な、またはインスタンス化のない関数テンプレート
std名前空間でのクラスのオブジェクトの作成 (カスタム クラスを含む)スマート ポインターのセマンティクス。
std::shared_ptrのみがサポートされます。MATLAB はスマート ポインターのクラス定義において、有効性が制限され得る演算子のオーバーロード、移動セマンティクス、およびメンバー関数をサポートしません。代わりに、std::shared_ptr<T>が MATLAB でタイプTとして動作します。タイプTはstd::shared_ptr<T>の入力として渡すことができ、タイプTはstd::shared_ptr<T>の出力として受け取られます。名前空間のエイリアス。代わりに元の名前空間の名前を使用します。
これらの機能または使用を含むライブラリをビルドすると、MATLAB は次を表示します。
Warning: Some C++ language constructs in the header file are not supported and not imported.
メモ
C++ オブジェクトを MAT ファイルに保存することはサポートされていません。
MATLAB での C++ クラスの継承
MATLAB では、C++ インターフェイス クラスを継承する MATLAB クラスの作成はサポートされていません。
サポートされていないクラス メソッド
MATLAB では、次の関連する関数を定義することによる演算子の実装はサポートされていません。
演算 | 定義するメソッド |
|---|---|
a(s1,s2,...,sn) | subsref(a,s) |
a(s1,...,sn) = b | subsassign(a,s,b) |
b(a) | subsindex(a) |