Ограничения к Поддержке C/C++

Можно создать интерфейс MATLAB® к 64-битным разделяемым библиотекам на основе C++ 98 и обычно происходящего C++ 11 функций. Однако, если библиотека содержит следующие типы данных или функции языка, то функциональность не включена в интерфейс MATLAB к библиотеке. Вы можете смочь включать эту функциональность путем создания заголовочного файла обертки. Для получения дополнительной информации смотрите Примеры Обходного решения Ограничения C++.

Типы данных, не поддержанные

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

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

  • Ссылки на указатель, например, int*&

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

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

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

  • void* элементы данных

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

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

  • ** указатели, кроме:

    • MATLAB поддерживает char**

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

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

  • C указатели функции и std::function как функциональные типы возврата или элементы данных. Вы также не можете передать функцию MATLAB как вход к указателям функции C или std::function параметр.

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

  • union

  • Типы заданы в std пространство имен, кроме этих поддерживаемых типов:

    • std::string

    • std::wstring

    • std::u16string

    • std::u32string

    • std::vector

    • std::shared_ptr

    • std::function

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

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

Did not add member 'methodName' to class 'ClassName' at HeaderFile.h:290.
  'long double' is not a supported type.

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

Функции языка, не поддерживавшие

  • move конструктор

  • Перегруженные функции оператора

  • Пространства имен без имени и классы

  • Макро-константы

  • Глобальные переменные

  • Функции Variadic

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

  • Создание объектов классов в std пространство имен, включая пользовательские классы.

  • Семантика интеллектуального указателя. Только std::shared_ptr поддерживается. MATLAB не поддерживает перегрузки оператора, семантику перемещения и функции членства в определении класса интеллектуального указателя, который может ограничить их эффективность. Вместо этого std::shared_ptr<T> ведет себя как тип T в MATLAB. Введите 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-файл не поддерживается.

Наследование класса C++ в MATLAB

MATLAB не поддерживает создание классы MATLAB, которые наследовали класс интерфейса C++.

Неподдерживаемые методы класса

MATLAB не поддерживает операторы реализации путем определения этих присоединенных функций.

Операция

Метод, чтобы задать

a < blt(a,b)
a > bgt(a,b)
a <= ble(a,b)
a >= bge(a,b)
a ~= bne(a,b)
a == beq(a,b)
a(s1,s2,...,sn)subsref(a,s)
a(s1,...,sn) = bsubsassign(a,s,b)
b(a)subsindex(a)

Похожие темы