C++ Names That Are Invalid in MATLAB - MATLAB & Simulink (original) (raw)
MATLAB® automatically renames classes, member functions, non-member functions, and enumerations with C++ names that are invalid in MATLAB by using the matlab.lang.makeValidName function. Enumerants and data members with C++ names that are invalid are not automatically renamed.
Rename Manually
A publisher can rename a class, enumeration, or non-member function in the library definition file. Renaming C++ namespaces, the outer (enclosing) class for nested classes, member functions, data members, enumerants, or the MATLAB namespace (interface name) is not supported.
For example, MATLAB converts the class name _myclass
in librarymylib
to x_myclass
. To use the class in MATLAB, type:
To rename x_myclass
, in the library definition file, change the namex_myclass
to myClass
, then build the interface. When you use the class in MATLAB, type:
Use Invalid Property Names
You might need to access a property in MATLAB, but the name of the property might not be a valid MATLAB name. For example, the name might begin with an underscore. To derive this name at run time, use this MATLAB syntax, where propertyName
is a string scalar or character vector that, when evaluated, returns an instance of a property.
clib.libName.className.(propertyName)
For example, suppose that you have interface clib.demo.MyClass
with this property:
class MyClass { public: int _mean; };
To assign property _mean
to a variable, type:
x = clib.demo.MyClass; xmean = x.('_mean')
This syntax is valid for names less than the maximum identifier length namelengthmax.
Use Invalid Enumerated Value Names
You might need to create an enumerated value in MATLAB, but the name of that value might not be a valid MATLAB name. For example, the enumerant name might begin with an underscore. To derive a value from this name at run time, use this MATLAB syntax, where enumMember
is a string scalar or character vector that, when evaluated, returns an instance of an enumeration.
clib.libName.enumName.(enumMember)
For example, suppose that you have interface clib.enums.keywords
with these properties:
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"]
To assign entry _class
to a variable, type:
var = clib.enums.keywords.('_class');
This syntax is valid for names less than the maximum identifier length namelengthmax.
Certain Class Names with typedef
Aliases Not Supported
MATLAB does not support a class typedef
alias name with the same name as a method in the class.