MATLAB ® автоматически переименовывает классы, функции-члены, функции, не являющиеся членами, и перечисления с именами C++, недопустимыми в MATLAB, используя matlab.lang.makeValidName функция. Перечислители и члены данных с недопустимыми именами C++ не переименовываются автоматически.
Издатель может переименовать класс, перечисление или функцию, не являющуюся членом, в файле определения библиотеки. Переименование пространств имен C++, внешнего (охватывающего) класса для вложенных классов, функций-членов, членов данных, перечислителей или пакета MATLAB не поддерживается.
Например, MATLAB преобразует имя класса _myclass в библиотеке mylib кому x_myclass. Для использования класса в MATLAB введите:
clib.mylib.x_myclass
Переименовать x_myclass, в файле определения библиотеки измените имя x_myclass кому myClass, затем создайте интерфейс. При использовании класса в MATLAB введите:
clib.mylib.myClass
Возможно, необходимо получить доступ к свойству в MATLAB, но имя свойства может быть недопустимым именем MATLAB. Например, имя может начинаться с подчеркивания. Чтобы получить это имя во время выполнения, используйте синтаксис MATLAB, где propertyName - строковый скалярный или символьный вектор, который при вычислении возвращает экземпляр свойства.
clib.libName.className.(propertyName)
Например, предположим, что у вас есть интерфейс clib.demo.MyClass с этим свойством:
class MyClass
{
public:
int _mean;
};
Назначение свойства _mean к переменной, введите:
x = clib.demo.MyClass;
xmean = x.('_mean')Этот синтаксис допустим для имен, длина которых меньше максимальной длины идентификатора namelengthmax.
Возможно, необходимо создать перечисляемое значение в MATLAB, но имя этого значения может не быть допустимым именем MATLAB. Например, имя перечислителя может начинаться с подчеркивания. Для получения значения из этого имени во время выполнения используйте синтаксис MATLAB, где enumMember - строковый скалярный или символьный вектор, который при вычислении возвращает экземпляр перечисления.
clib.libName.enumName.(enumMember)
Например, предположим, что у вас есть интерфейс clib.enums.keywords со следующими свойствами:
EnumDefinition with properties:
Description: "clib.enums.keywords Representation of C++ enumeration"
DefiningLibrary: [1×1 clibgen.LibraryDefinition]
CPPName: "keywords"
MATLABType: "int32"
Valid: 1
MATLABName: "clib.enums.keywords"
Entries: ["_for" "_while" "_class" "_enums" "_template" "_typename"]
Назначение записи _class к переменной, введите:
var = clib.enums.keywords.('_class');Этот синтаксис допустим для имен, длина которых меньше максимальной длины идентификатора namelengthmax.
typedef Псевдонимы не поддерживаютсяMATLAB не поддерживает класс typedef псевдоним с тем же именем, что и метод в классе.