Main Content

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 のエイリアス名に、このクラスのメソッドと同じ名前を付けることはサポートされません。