このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
C++ から MATLAB へのデータ型のマッピング
以下の表に、MATLAB® が C/C++ データを同等の MATLAB データ型にどのように変換するかを示します。MATLAB でのライブラリ定義ファイルの作成時、これらのマッピングが使用されます。MATLAB シグネチャの不足している情報を定義するときは、この情報を使用すると役立ちます。
数値型
スカラー整数型
固定幅の整数データ型のマッピングはプラットフォームおよびコンパイラに依存しません。非固定幅の整数型のマッピングはコンパイラに基づきます。
固定幅の整数型. これらの型については、DIRECTION
を "input"
、SHAPE
を 1
として指定します。
C の固定幅のスカラー整数型 | 対応する MATLAB の型 |
---|---|
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
|
|
| 複素数の |
非固定幅の整数型. MATLAB は以下の非固定幅の C 整数型をサポートしています。使用したコンパイラに基づき、MATLAB は、固定幅の整数型の表に示すように、これらの型を対応する固定幅の C 型にマップします。
short
short int
signed short
signed short int
unsigned short
unsigned short int
int
signed int
unsigned
unsigned int
long
signed long
signed long int
unsigned long
unsigned long int
long long
ベクトル整数型
次の表は、MATLAB データ型が std::vector
型にどう対応しているかを示しています。既定では、MATLAB は std::vector
型を MATLAB clib.array
型で表します。詳細については、C++ 配列用の MATLAB オブジェクトを参照してください。
MATLAB は C++ の基本型の名前をアッパー キャメル ケースに変換します。複素数型については、MATLAB は std.complex
を clib.array
型に追加します。
これらの型については、DIRECTION
を "input"
、SHAPE
を 1
として指定します。
C++ の std::vector<T> のパラメーター T の整数型 | MATLAB の対応するインターフェイス | 要素の型 |
---|---|---|
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
浮動小数点型
これらの型については、DIRECTION
を "input"
、SHAPE
を 1
として指定します。
C 浮動小数点型 | 対応する MATLAB の型 |
---|---|
|
|
| 複素数の |
|
|
| 複素数の |
C++ の std::vector<T> のパラメーター T の浮動小数点型 | MATLAB の対応するインターフェイス | 要素の型a |
---|---|---|
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
a For information about using element types, see C++ 配列用の MATLAB オブジェクト. |
String 型と文字型
以下の表に、C++ の string
および char
データ型が MATLAB データ型にどう対応しているかを示します。データのマッピングは、関数で型をパラメーター、戻り値の型、データ メンバー (プロパティ) のいずれとして使用するかによって異なります。たとえば、次の関数定義では T
型をそれぞれ異なる方法で使用しています。
void fcn(T); // T is a parameter type (MATLAB input argument) T fcn(); // T is a return type (MATLAB output argument)
標準の C++ の文字型と string 型
これらの型については、DIRECTION
を "input"
、SHAPE
を 1
として指定します。
標準の C++ の文字型 | 対応する MATLAB の型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
標準の C++ の string 型 | 対応する MATLAB の型 |
---|---|
|
|
|
|
std::u16string |
|
std::u32string |
|
C++ の char*
型と char[]
型
C++ のパラメーターの型 | MLTYPE | SHAPE |
---|---|---|
|
| スカラー値 |
|
| |
|
| スカラー値 |
|
| |
wchar_t* const wchar_t* wchar_t[] const wchar_t[] char16_t* const char16_t* char16_t[] const char16_t[] char32_t* const char32_t* char32_t[] const char32_t[] | "char" | スカラー値 |
|
| |
a MATLAB sets the |
C++ の戻り値の型 | MLTYPE | SHAPE |
---|---|---|
|
| "nullTerminated" |
| スカラー値 | |
wchar_t* const wchar_t* wchar_t[] const wchar_t[] char16_t* const char16_t* char16_t[] const char16_t[] char32_t* const char32_t* char32_t[] const char32_t[] |
| "nullTerminated" |
| スカラー値 |
C++ のデータ メンバーの型 | 対応する MATLAB の型 |
---|---|
|
|
|
|
C++ の string の配列
C++ の string パラメーター型の配列 | MLTYPE | SHAPE a |
---|---|---|
| "string" | {scalar value, |
a 1D array of string. The first element is the size of array and the last element is the shape of each element. |
C++ の string データ メンバー型の配列 | 対応する MATLAB の型 |
---|---|
|
|
MATLAB は、次の const
および非 const
の C++ 戻り値の型をサポートしていません。
char**
およびchar*[]
wchar_t**
およびwchar_t*[]
char16_t**
およびchar16_t*[]
char32_t**
およびchar32_t*[]
std::vector<T>
string 型
これらの型については、DIRECTION
を "input"
として指定します。
C++ の std::vector<T> string 型 | MATLAB の対応するインターフェイス | 要素の型a |
---|---|---|
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
|
| clib. |
a For information about using element types, see C++ 配列用の MATLAB オブジェクト. |
bool
型
これらの型については、DIRECTION
を "input"
、SHAPE
を 1
として指定します。
bool 型 | 対応する MATLAB の型 |
---|---|
|
|
| MATLAB の対応する | 要素の型a |
---|---|---|
|
|
|
a For information about using element types, see C++ 配列用の MATLAB オブジェクト. |
Static データ メンバー
public static および public const
static データ メンバーは、MATLAB では読み取り専用プロパティとして扱われます。static データ メンバーの値を更新することはできません。たとえば、次のヘッダー ファイルに対するインターフェイス lib
を作成します。
class Set { public: static int p1; const static int p2; }; int Set::p1 = 5; const int Set::p2 = 10;
clib.lib.Set
のヘルプでは、p1
と p2
がプロパティとして表示されます。MATLAB でプロパティを使用するには、次のようにします。
res = clib.lib.Set.p1 + clib.lib.Set.p2
res = 15
クラスの名前を使用して static プロパティを更新しないでください。その場合、MATLAB で clib
という名前の構造体が作成されます。インターフェイスで関数を呼び出す前に、clib
構造体を手動でクリアしなければなりません。たとえば、static プロパティ p1
を更新しようとすると、clib
は変数になります。
clib.lib.Set.p1 = 20
clib = lib: [1×1 struct]
clib.lib
のコマンドを呼び出す前に変数をクリアします。
clear clib
clib.lib.Set.p1
ans = 5
SHAPE
の引数での static プロパティの使用の詳細については、Use Property or Method as SHAPEを参照してください。
const
型
MATLAB は、C++ 読み取り専用クラスのオブジェクトを const
オブジェクトとして扱います。オブジェクトの名前は C++ クラス名であり、MATLAB は "読み取り専用" テキストをオブジェクト表示に追加します。たとえば、次のライブラリ MyClass
への MATLAB インターフェイスを作成します。
const class MyClass { public: int val1; int val2; }; const MyClass& func();
MATLAB で関数 func
を呼び出して const
MyClass
オブジェクトを作成します。
res = clib.MyClass.func()
res = read-only MyClass with properties: val1: 1 val2: 2
オブジェクトが const
かどうかを確認するには、clibIsReadOnly
を呼び出します。
clibIsReadOnly(res)
ans = logical 1
オブジェクトが読み取り専用の場合、関数は logical の 1 (true
) を返します。その他の場合は logical 0 (false
) を返します。
ユーザー定義型
Class と Struct の型
次の表に、MATLAB のライブラリ libname
に対するインターフェイスの定義ファイルで C++ のパラメーターの型である T
を構成する方法を示します。T
は class または struct です。
C++ のパラメーターの型 | 対応する MATLAB の libname の型 | DIRECTION | SHAPE |
---|---|---|---|
|
| "input" | 1 |
T* | clib. | "input" | 1 |
clib.array. | "input" | 1 | |
|
| "input" | 1 |
T& |
| "input" | 1 |
|
| "output" | 1 |
|
| "input" | 1 |
|
| "input" | 1 |
|
| "input" "inputoutput" | 1 |
次の表に、C++ の戻り値の型である T
を構成する方法を示します。
C++ の戻り値の型 | 対応する MATLAB の libname の型 | SHAPE |
---|---|---|
|
| 1 |
T* | clib. | 1 |
clib.array. | 1 | |
|
| 1 |
|
| 1 |
|
| 1 |
|
| 1 |
|
| 1 |
次の表に、C++ のデータ メンバーの型である T
を構成する方法を示します。
C++ のデータ メンバーの型 | 対応する MATLAB の libname の型 | SHAPE |
---|---|---|
|
| 1 |
T* | clib. | 1 |
clib.array. | 1 | |
|
| 1 |
|
| 1 |
|
| 1 |
列挙型
次の表に、MATLAB のライブラリ libname
に対するインターフェイスの定義ファイルで C++ の enum 型である T
を構成する方法を示します。T
は列挙型です。
C++ のパラメーターの型 | 対応する MATLAB の libname の型 | DIRECTION | SHAPE |
---|---|---|---|
T |
| "input" | 1 |
C++ の戻り値の型 | 対応する MATLAB の libname の型 | SHAPE |
---|---|---|
T |
| 1 |
C++ のデータ メンバーの型 | 対応する MATLAB の libname の型 | SHAPE |
---|---|---|
T |
| 1 |
nullptr
引数型
nullptr
入力引数型
MATLAB では次の C++ 入力引数型で関数に NULL を渡せるように、clib.type.nullptr
型を提供しています。
オブジェクトへのポインター。ただし、基本の MATLAB 配列型へのポインターはサポートされません。
shared_ptr
Arrays
clib.type.nullptr
型は次の MATLAB 引数の型でサポートされています。
スカラーのオブジェクト ポインター
clib
配列
nullptr
型の戻り値
C++ インターフェイスは、nullptr
を返す関数に対し、型固有の empty
値を返します。
double
型の場合、MATLAB は値double.empty
の代わりに[]
を返す。その他すべての基本型については、MATLAB は
の値を返す。MLTYPE
.emptyMLTYPE
を判定するには、このトピックの表で C または C++ の型を確認します。MLTYPE
は対応する MATLAB の型の列にあります。nullptr
型をテストするには、関数isempty
を呼び出します。基本型以外の場合、MATLAB は
nullptr
オブジェクトを返す。nullptr
オブジェクトをテストするには、関数clibIsNull
を呼び出します。
void*
引数型
C++ 関数との間での void*
引数の受け渡しについては、void* 引数および void** 引数の定義を参照してください。MATLAB では、void*
データ メンバーはサポートされません。
void*
入力引数を渡すとき、MATLAB は基となるデータを対応する C++ 型に変換します。
基本型のマッピング
C++ の型 | 対応する MATLAB の |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clib.array
型のマッピング
C++ の型 | MATLAB の対応する |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a MATLAB converts the names of fundamental C++ types to upper camel case. |
typedef void*
のマッピング
C++ の型 | 対応する MATLAB の |
---|---|
typedef void* | clib. |
サポートされていないデータ型
クラス コンストラクター、メソッドまたは関数に含まれる引数/戻り値の型のデータ型が次のいずれかの型である場合、またはライブラリにサポートされていない言語機能が含まれている場合、この機能はライブラリに対する MATLAB インターフェイスに含まれません。
サイズが 64 ビットより大きいすべての型 (
long double
など)ポインターへの参照 (例:
int*&
)std::string
のポインターまたは配列列挙型へのポインターまたは参照
クラス オブジェクトへのポインターのベクトル (
std::vector<Myclass*>
など)参照データ メンバー
void*
データ メンバー多次元データ メンバーの配列
static データ メンバーの変更
**
ポインター。ただし、次の例外があります。MATLAB は、
char**
型をサポートします。MATLAB は、関数またはメソッド パラメーターのタイプとして使用されるカスタム クラスへの
**
ポインターをサポートします。MATLAB は、関数またはメソッド パラメーターのタイプとして使用される
void**
をサポートします。
マルチレベル ポインター (
など)type
***C 関数ポインター、および関数の戻り値の型またはデータ メンバーとしての
std::function
。また、C 関数ポインターへの入力、またはstd::function
パラメーターとして MATLAB 関数を渡すこともできません。インスタンス化の不完全な、またはインスタンス化のないクラス テンプレート
union
std
名前空間で定義される型。ただし、サポートされている次の型は除きます。std::string
std::wstring
std::u16string
std::u32string
std::vector
std::shared_ptr
std::function
std::complex
サポートされていない型についてのメッセージ
MATLAB はサポートされていない型を使用する構成要素についてレポートします。これらのメッセージを表示するには、関数 clibgen.generateLibraryDefinition
または関数 clibgen.buildInterface
で Verbose
オプションを使用します。
たとえば、ClassName
内の functionName
が HeaderFile.h
で定義されるとします。functionName
の引数が、サポートされていない type
型の場合、MATLAB は定義ファイルに functionName
を追加しません。さらに、Verbose
が true
の場合、clibgen.generateLibraryDefinition
は次のメッセージを表示します。
Did not add member 'functionName' to class 'ClassName' at HeaderFile.h:290. 'type' is not a supported type.
参考
clibgen.generateLibraryDefinition
| clibgen.buildInterface
| clibIsReadOnly