MATLAB で無効な C++ 名
MATLAB® は、関数 matlab.lang.makeValidName
を使用して、MATLAB 内で無効な C++ 名をもつクラス、メンバー関数、非メンバー関数および列挙型の名前を自動的に変更します。無効な C++ 名をもつ列挙値およびデータ メンバーの名前は、自動的に変更されません。
名前の手動変更
パブリッシャーは、ライブラリ定義ファイル内のクラス、列挙型または非メンバー関数の名前を変更できます。C++ 名前空間、入れ子にされたクラスを囲む外側のクラス、メンバー関数、データ メンバー、列挙値または MATLAB パッケージの名前の変更はサポートされていません。
たとえば、MATLAB はライブラリ mylib
内のクラス名 _myclass
を、x_myclass
に変換します。このクラスを MATLAB で使用するには、次のように入力します。
clib.mylib.x_myclass
ライブラリ定義ファイル内の x_myclass
の名前を変更するには、x_myclass
の名前を myClass
に変更してからインターフェイスをビルドします。このクラスを MATLAB 内で使用するときは、次のように入力します。
clib.mylib.myClass
無効なプロパティ名の使用
MATLAB のプロパティにアクセスする必要があるが、プロパティ名が有効な MATLAB 名ではない場合があります。たとえば、名前がアンダースコアで始まっている場合があります。実行時にこの名前を派生させるには、次の MATLAB 構文を使用します。ここで、propertyName
は評価時にプロパティのインスタンスを返す string スカラーまたは文字ベクトルです。
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
は評価時に列挙型のインスタンスを返す string スカラーまたは文字ベクトルです。
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
のエイリアス名に、このクラスのメソッドと同じ名前を付けることはサポートされません。