Недопустимые имена 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, где propertyName - строковый скаляр или вектор символов, который при оценке возвращает образец свойства.

clib.libName.className.(propertyName)

Например, предположим, что у вас есть интерфейс clib.demo.MyClass с этим свойством:

class MyClass
{
public:
    int _mean;
};

Для назначения _mean свойств в переменную введите:

x = clib.demo.MyClass;
xmean = x.('_mean')

Этот синтаксис действителен для имен, которые меньше максимальной длины идентификатора namelengthmax.

Использование недопустимых имен перечисленных значений

Возможно, вам потребуется создать перечисленное значение в 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 классов псевдоним с таким же именем, как и метод в классе.