生成c++类MATLAB类
生成c++代码时,默认行为的代码生成器生成c++类在MATLAB的类®代码。这些包括所有MATLAB类,如值类,处理类,和系统对象。
您可以更改默认行为MATLAB代码生成器产生结构的类。改变默认的行为,下列之一:
在一个代码配置对象,集
TargetLang
来“c++”
和CppPreserveClasses
来假
。在MATLAB编码器™应用程序,生成一步,设置语言来c++。在项目构建设置代码的外观选项卡上,清晰的从MATLAB生成c++类的类复选框。
这些例子说明时,代码生成器遵循一定的规则映射MATLAB c++类类。
例如:生成代码的处理类,有私人和公共成员
定义一个MATLAB处理类MyClass
:
classdefMyClass <处理属性publicProp = 1;结束属性(访问=私人)privateProp结束方法函数obj = MyClass(价值)obj。privateProp =价值;结束函数publicMethod (obj,值)obj.privateMethod(价值);结束函数res = calculateSomeValue (obj) res = obj.publicProp * obj.privateProp;结束结束方法(访问=私人)函数privateMethod (obj,价值)obj。publicProp = obj。publicProp +价值;obj。privateProp = obj。privateProp + obj.doubleThisValue(价值);结束结束方法(静态)函数res = doubleThisValue res = 2 *瓦尔(val);结束结束结束
定义一个MATLAB函数喷火
使用MyClass
:
函数= foo (x, y) obj = MyClass (x);obj.publicMethod (y);= obj.calculateSomeValue;结束
生成一个静态的c++库喷火
。指定输入参数是一个双标量。设置代码生成配置属性InlineBetweenUserFunctions
来“可读性”
。
cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。InlineBetweenUserFunctions =“可读性”;codegen配置cfg喷火arg游戏{0}报告
代码生成成功:查看报告
打开代码生成报告和检查生成的代码。该文件MyClass.h
包含生成的c++类的定义MyClass
:
MyClass类{公众:MyClass * init(双精度值);空白publicMethod(双精度值);静态双doubleThisValue(双val);双calculateSomeValue()常量;双publicProp;私人:双privateProp;};
这是生成的代码的函数喷火
:
双foo(双x,双y) {MyClass obj;obj.init (x);obj.publicMethod (y);返回obj.calculateSomeValue ();}
此表列出了一些代码生成器的规则遵循在生成c++类和相应的从生成的代码片段MyClass
。
规则 | 代码片段 |
---|---|
MATLAB是映射到一个类构造函数 |
该文件 MyClass * MyClass:: init(双值){MyClass * obj;obj =;obj - > publicProp = 1.0;obj - > privateProp =价值;返回obj;} |
在大多数情况下,如果一个类成员设置为私人在MATLAB中,它也设置为私人在生成c++代码。 在某些情况下,内联一个公共方法在生成c++代码更改MATLAB代码的私有财产的公共财产生成的代码和数据封装。例如,假设一个公共方法 限制这个发生,代码生成器使用一个特殊inlinig规则公共方法在这种情况下:
在这些情况下,相同的内联规则适用于普通函数和公共方法:
|
生成c++类的定义 MyClass类{公众:MyClass * init(双精度值);空白publicMethod(双精度值);静态双doubleThisValue(双val);双calculateSomeValue()常量;双publicProp;私人:双privateProp;}; 所有数据的可见性和成员函数是MATLAB之间保存和生成的代码。 私有方法 空白MyClass:: publicMethod(双值){- > publicProp + =价值;这- > privateProp + = MyClass: doubleThisValue((值));} |
静态方法在MATLAB c++映射到静态方法。 |
生成的代码的静态方法 静态双doubleThisValue(双val); |
不改变对象的方法标明 |
的公共方法 双calculateSomeValue()常量; |
额外使用笔记和局限性
这些都是一些额外的使用说明和限制从MATLAB生成c++类类:
类的原型
MyClass
头文件中包含吗MyClass.h
。的实现类的方法中包含该文件MyClass.cpp
。在生成的代码中,类层次结构被夷为平地。例如,假设在MATLAB代码中,类
B
类继承自一个
。在生成c++代码,类B
和一个
他们之间没有继承关系。在生成的代码中,类的所有属性和方法一个
在类的定义复制B
。当一个MATLAB类使用不同类型的属性,代码生成器生成一个单独的c++类为每个类型的使用。
如果一个MATLAB类成员有不同的
GetAccess
和SetAccess
生成的类的属性,对应的成员有两个属性的更多的宽容。例如,如果一个属性道具
有属性(GetAccess =公共SetAccess =私人)
,道具
定义一个公共财产在生成的代码。在试图生成独立的代码,其中包含为MATLAB c++类类,你可能会得到一个警告消息,如果这两个条件是正确的:
你选择启用生成可重入的代码
MultiInstanceCode
参数代码配置对象或通过支持生成可重入的代码参数MATLAB编码器应用程序。类的析构函数在MATLAB代码中有一个持续的变量或调用另一个函数声明和使用一个持久变量。
在这种情况下,生成的代码包含用于MATLAB c++类类,禁用
MultiInstanceCode
或者是生成可重入的代码参数。
另请参阅
coder.CodeConfig
|coder.EmbeddedCodeConfig
|coder.MexCodeConfig