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