主要内容

MATLABC ++クラスクラスの生成生成生成生成

c ++コードをする场合,コードジェネレーター既定の动作ではは,,®C ++クラスクラスクラスクラスクラスクラス生成され。これこれにはは,,,,値値値クラスクラス,クラスクラスクラスクラスクラス,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

コードジェネレーターの动作を変更して,ててクラスクラス対応する体体をを生成生成できできできますます既定の动作动作をを変更変更変更するにはは

  • コード构成オブジェクト,TargetLang'C ++'に,cpppreserveclasses错误的に设定し。

  • MATLAB CODER™アプリの[生成]ステップで,[言语][C ++]に设定ます。のビルド设定の[コード]タブで,[matlabクラスからc ++クラスを]チェックボックスオフにし。。

Matlabクラスクラスクラスクラスををををクラスにする际コードコードジェネレーターが従う特定ののますます示し示し

例:プライベートメンバーパブリックをもつハンドルのコード生成

matlabハンドルクラス我的课を定义し。

ClassDefmyclass <句柄特性publicProp = 1;结尾特性(访问=私人)privateProp结尾方法功能obj = myClass(value)obj.privateProp = value;结尾功能publicMethod(obj,value)obj.privatemethod(value);结尾功能res = calculatesOmeValue(obj)res = obj.publicprop*obj.privateprop;结尾结尾方法(访问=私有)功能privateMethod(obj,value)obj.publicprop = obj.publicprop + value;obj.privateprop = obj.privateprop + obj.doublethisvalue(value);结尾结尾方法(静止的)功能res = DoubleThisValue(val)res = 2 * val;结尾结尾结尾

我的课を使用するmatlab关数fooを定义し。

功能out = foo(x,y)obj = myClass(x);obj.publicmethod(y);out = obj.calculatesOmeValue;结尾

fooc ++スタティックスタティックを生成します。入力引数をををスカラースカラーにしますます。コード生成プロパティプロパティプロパティInlineBetweenuserfunctions'可读性'に设定し。

cfg = coder.config('lib');cfg.targetlang ='C ++';cfg.inlinebetweenuserfunctions ='可读性';代码根-configCFGfoo-args{0,0}-报告
代码生成成功:查看报告

コード生成开き,されたをしします。ファイルmyclass.hC ++クラスクラスクラス生成生成生成クラスクラスクラス我的课の定义含まれて。。

类myclass {public:myClass *init(double value);void publicMethod(双重值);静态双重脱氧气(双阀);double carculate omeValue()const;双公共销售;私人:Double PrivateProp;};

关数fooに対して生成れコードはのとおりです。

double foo(double x,double y){myclass obj;obj.init(x);obj.publicmethod(y);返回obj.calculatesOmeValue();}

C ++クラスクラスを生成するにコードが従ういくつのの规则规则,,,,我的课に対して生成たコード対応するスニペット示し。。。

ルール コードスニペット

matlabののはは在里面メソッドにれてますクラスのが作成れると,生成生成されれによってによってによって在里面メソッドが的に呼び出さ。。

ファイルmyclass.cppには在里面の定义含まれて。。

myclass *myClass :: init(double value){myClass *obj;obj = this;obj-> publicProp = 1.0;obj-> privateProp = value;返回obj;}

matlabでででプライベート设定さいるクラスメンバーはは生成ささされれたたたたたたたたたコードコードコードコードでも

c ++ c ++コードコードコードにパブリックメソッドをインラインととと,,生成生成生成さささコードたたれれれれれコードコードコードコードプロパティががパブリックパブリックにににれれれれ,,,,,,支柱を使用するメソッドmymethodがエントリによって呼び出さとします生成れれコードコードにmymethodをインラインする场合,プロパティ支柱はオブジェクトからされ,パブリックに変更れなければなりません。

この発生するに,ジェネレーターは次场合ににパブリックメソッドに対して特别特别なインラインインライン化规则がが使用使用

  • コード构成プロパティInlineBetweenuserfunctionsまたはMATLAB编码器アプリにおけるのコード生成设定[ユーザー关数の]'可读性'に设定て场合,ジェネレータークラス定义外部にあるパブリックメソッドの呼び出し呼び出しをインラインインラインませませませ

次の,通常关数パブリックメソッド両方にインライン化规则がが适用ささ。。。

  • 关数またはの本体にななcoder.inline(“始终”)命令またはcoder.inline('从不')命令がれ。この命令は优先されます。

  • コード构成プロパティInlineBetweenuserfunctionsまたはMATLAB编码器アプリにおけるのコード生成设定[ユーザー关数の]'绝不''速度'または'总是'に设定れている。

  • メソッドの同じクラス别のメソッドに。。。

生成コードパフォーマンス性を微调整するのインライン化の制御を参照しください。

C ++クラスクラスクラスクラス我的课の定义次のとおり。。

类myclass {public:myClass *init(double value);void publicMethod(双重值);静态双重脱氧气(双阀);double carculate omeValue()const;双公共销售;私人:Double PrivateProp;};

すべてのメンバー关数の可视性は,,とととさたコードコードの间でで维持さ。。

プライベートメソッドPrivateMethodはこのにはされません。PrivateMethodPublicMethodの定义インラインされてます(ファイルmyclass.cpp内を参照)。

void myclass :: publicMethod(double value){this-> publicProp += value;this-> privateProp += myClass :: doublethisvalue((value));}

matlabの的はははは静静静にされて。。。

静的メソッド双重脱牙の生成れコードは次のがあります。

静态双重脱氧气(双阀);

生成さたで,オブジェクトをしないメソッドはconst修饰子でされます。

パブリックメソッド计算成果はオブジェクトしん。されたに次のシグネチャがあり。。

double carculate omeValue()const;

その他使用の注意事项および事项事项

matlabクラスのc ++クラスクラス生成はそのにも使用上の注意事项制限制限がいくついくついくつか

  • 我的课のクラスプロトタイプはファイルファイルmyclass.hに含まいますクラスのメソッド実装ファイルファイルファイルmyclass.cppに含まています。

  • 生成さたで,クラス阶层はになります。たとえば,,,,,,,コードコードbがクラス一个から継承れるします。生成れれたたたたたコードコードコードでクラスbとクラス一个の间关系ありません。れたコードではクラス一个のすべてプロパティおよびメソッドクラスクラスbの定义再现され。。

  • matlabクラスがに対して异なる型使用场合コードジェネレーターは型のの使用ごとにに个别ののののののののののののの

  • matlabクラスメンバーのGetAccess属性とsetAccess属性が,されたクラスするメンバーは,,,つのつのつの属性のうち许容性性がが高い方方ををもちもち支柱が属性(getAccess = public,setAccess = private)をもつ场合生成れたコードで,,支柱はパブリックとして定义さ。。

  • matlabクラスするするするクラスクラス含む含むコード生成生成としたたときときに以下以下の両方両方の条件に该当するはは,警告

    • コード构成オブジェクトでMultiInstanceCodeパラメーターをにするか,MATLAB编码器アプリで[再呼び出しなコード]パラメーターをするで,呼び出し可能なをするように选択し。。

    • matlabコードののデストラクター永続もつ,永続ををしして使用する别のをををを

    Matlabクラスクラスクラスクラスにするするするするするクラスクラスクラス含むを生成するするは,,,MultiInstanceCodeパラメーターまたは[再呼び出しなコード]パラメーターをにします。

参考

||

关连するトピック