MATLAB к отображению типа данных C++

Типы данных фиксированной ширины

Эти таблицы показывают, как типы данных MATLAB® соответствуют фиксированной ширине типы C++.

C целочисленный тип Фиксированной ШириныЭквивалентный тип MATLAB

int8_t

int8

uint8_t

uint8

int16_t

int16

uint16_t

uint16

int32_t

int32

uint32_t

uint32

int64_t

int64

uint64_t

uint64

Эта таблица показывает, как типы данных MATLAB соответствуют std::vector типы. По умолчанию MATLAB представляет std::vector типы с clib.array MATLAB ввод. Для получения дополнительной информации смотрите Объект MATLAB Для Массивов C++.

C++ std::vector<T> Ввод

Эквивалентный MATLAB clib.array Введите для libname

std::vector<int8_t>

clib.array. libname.SignedChar

std::vector<uint8_t>

clib.array. libname.UnsignedChar

std::vector<int16_t>

clib.array. libname.Short  

std::vector<uint16_t>

clib.array. libname.UnsignedShort 

std::vector<int32_t>

clib.array. libname.Int

std::vector<uint32_t>

clib.array. libname.UnsignedInt

std::vector<int64_t>

clib.array. libname.LongLong 

std::vector<uint64_t>

clib.array. libname.UnsignedLongLong 

C тип с плавающей точкойЭквивалентный тип MATLAB

float

single

double

double

C++ std::vector<T> Тип с плавающей точкой

Эквивалентный MATLAB clib.array Введите для libname

std::vector<float>

clib.array. libnameединственный

std::vector<double>

clib.array. libname'double'

Другой тип CЭквивалентный тип MATLAB

bool

logical

Другой std::vector<T> C++ Ввод

Эквивалентный MATLAB clib.array Введите для libname

bool

clib.array. libnamebool

Целочисленные типы "не фиксированная ширина"

MATLAB поддерживает их "не зафиксированная ширина" C целочисленные типы. На основе используемого компилятора MATLAB сопоставляет эти типы с соответствующей фиксированной шириной C типы, как показано в таблицах Fixed-Width Data Types.

  • 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 преобразует string и char данные, возвращенные в C++ в типы MATLAB.

Тип символов C++Эквивалентный тип MATLAB

char

int8

signed char

int8

unsigned char

uint8

wchar_t

char

Строковый тип C++Эквивалентный тип MATLAB

std::string

string, Символы ASCII только

std::wstring
std::u16string
std::u32string

string

char *

string

const char * Типы символов и строковые типыЭквивалентный тип MATLAB

const char * входной параметр

То же самое как char *:

  • clib.array.lib.Char

  • int8

  • string

  • char

const char * возвращаемый аргумент

скалярный int8

Тип символов Точной Ширины C++Эквивалентный тип MATLAB

char16_t

char

char32_t

char

Пользовательские типы

Эти таблицы показывают, как вызвать C++ пользовательский тип в библиотеке libname интерфейса MATLAB.

C++ пользовательский типЭквивалентный тип MATLAB

struct StructName

libname.StructName

перечислимый EnumName

libname.EnumName

Тип класса C++

Эквивалентный MATLAB clib.array Введите для libname

std::vector<T>

clib.array. libnameT

std::vector<T []>

clib. libnameT

std::shared_ptr<T>

clib.array. libnameT

nullptr Типы аргумента

nullptr Типы входного параметра

MATLAB обеспечивает clib.type.nullptr введите так, чтобы можно было передать NULL функции с этими типами входного параметра C++:

  • Указатели на объекты. Однако указатели на основные типы массива MATLAB не поддерживаются.

  • shared_ptr

  • Массивы

clib.type.nullptr тип поддерживается для этих типов аргумента MATLAB:

  • скалярные объектные указатели

  • clib массивы

nullptr Возвратите типы

Интерфейс C++ возвращает специфичный для типа empty значения для функций, которые возвращают nullptr.

  • Для типа double, ​ MATLAB возвращает [] для значения double.empty.

  • Для всех других фундаментальных типов, ​ MATLAB возвращает MLTYPEпустой значение. Определить MLTYPE, ищите C или тип C++ в таблицах в этой теме. MLTYPE находится в столбце Equivalent MATLAB Type.

    Протестировать на nullptr типы, вызовите isempty функция.

  • Для нефундаментальных типов, ​ MATLAB возвращает nullptr объект. Протестировать на nullptr объекты, вызовите clibIsNull функция.

Неподдерживаемые типы данных

Если тип данных типа аргумента/возвращаться в конструкторе класса, методе или функции является одним из этих типов, или если библиотека содержит какие-либо неподдерживаемые функции языка, то функциональность не включена в интерфейс MATLAB к библиотеке.

  • Любой тип с размером, больше, чем 64 бита, например, long double

  • void *

  • Массивы типов символов (wchar_t, char16_t, char32_t)

  • Указатели или массивы std::string

  • Ссылки на указатель в функции

  • Указатели или ссылки на перечисления

  • Члены справочных данных

  • std интеллектуальные указатели кроме std::shared_ptr

  • Статические элементы данных

  • ** указатели на типы примитивов, такие как double**. MATLAB поддерживает ** указатели на пользовательские классы, используемые в качестве функции или ​method типов параметра.

  • Многоуровневые указатели, такие как type***

  • Указатель функции

  • Шаблоны классов с неполным или никакими инстанцированиями

  • union

Эти типы заданы в std пространство имен поддерживается. Все другие типы в std пространство имен не поддерживается.

  • std::string, std::wstring, std::u16string, std::u32string

  • std::vector

  • std::shared_ptr

Сообщения о неподдерживаемых типах

MATLAB сообщает относительно построений о том использовании неподдерживаемые типы. Чтобы просмотреть эти сообщения, используйте 'Verbose' опция в clibgen.generateLibraryDefinition или clibgen.buildInterface функции.

Например, предположите тот functionName в ClassName задан в 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.

Смотрите также

|

Похожие темы