exponenta event banner

Недопустимые имена C++ в MATLAB

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 псевдоним с тем же именем, что и метод в классе.