主要内容

c++类使用的界面C函数

你可以使用你指定的代码C函数块接口直接与c++类中定义您的自定义代码。

  • 一个c++类的实例化一个对象中定义您的自定义代码。

  • 读和写公共类对象的数据成员。

  • 调用公共类方法(类成员函数)的对象。

这个例子演示了使用C函数块与c++类。

创建源代码文件

在引入您的自定义代码之前,选择c++作为自定义代码的语言。在模型中配置参数,模拟目标窗格中,设置语言c++

接下来,创建头文件和源文件。创建一个头文件命名adder.h定义一个c++类加法器和它的方法。

的ifndef _ADDER_CPP_ #定义_ADDER_CPP_类加法器{私人:int int_state;公众:加法器();加法器(int init_value);int add_one (int增量);int get_val ();};# endif / * _ADDER_CPP_ * /

实现类及其方法在一个源文件。创建源文件,adder.cpp

# include“adder.h”加法器::加法器() { int_state = 0; } adder::adder(int init_value) { int_state = init_value; } int adder::add_one(int increment) { int_state += increment; return int_state; } int adder::get_val() { return int_state; }

配置C函数

一个c++类的实例化一个对象在您的模型中定义的自定义代码:

  1. 添加一个C函数块模型。

  2. 双击C函数块以打开它。

  3. 定义头文件和源文件:

    1. 单击配置自定义代码设置按钮打开配置参数窗口。在模拟目标窗格中,在代码信息选项卡下,包括头信息通过输入,定义头文件# include“adder.h”

    2. 代码信息选项卡,在源文件,通过输入定义源文件adder.cpp

    有关更多信息,请参见外部代码输入到仿真软件金宝app

  4. 定义类对象。在块对话框中,在符号表,点击添加定义一个符号。

  5. 指定的符号属性。设置范围的符号持续的,设置对象的名称的名字列,设置的象征类型通过使用以下格式:

    类:<类名>

例如,这个符号表的实例化一个对象加法器类命名obj。的int_state的属性obj初始化默认值为0。

摘录的C函数块对话框,显示与象征符号表名为“obj”持久的范围和类型”类:加法器”。

向类构造函数传递参数,这些参数包括在括号中,由逗号分隔,以下的符号名的名字字段。

对象名(Argument1,Argument2,……)
您可以使用字面常量以及表情参数常数中定义的符号符号表参数规范。这些表达式可以使用C语法,包括表情拟定p [0],在那里p是一个参数常数的象征。支持重载类构造函数。金宝app

例如,这个符号表的实例化一个对象加法器类命名obj,初始化int_state对象的属性的值10通过值传递给构造函数。

摘录的C函数块对话框,显示包含一个持久符号表范围象征型”类:加法器”。Name字段,并包含突出显示“obj (10)”。

金宝app®创建对象的模拟和破坏对象仿真结束时。在仿真过程中,对象是作为一个整体块缓存状态和其他持续的符号。你不能显式地调用类的构造函数和析构函数块。

您可以使用输出代码和其他代码块读写公共数据成员的类对象,调用公共对象的类方法。重载方法和运营商支持,静态方法。金宝app默认参数中指定的类方法如果他们支持定义类的头文件。金宝app

使用开始代码初始化条件代码初始化数据成员和终止代码打电话给清理的方法。在创建类的对象开始代码执行和被摧毁终止代码执行。属性和方法的访问,使用点符号。

PropertyValue =ClassObjectNamePropertyName;ReturnValue =ClassObjectNameMethodName(参数);
输出代码块调用add_one的方法obj。块将块输入作为参数传递给方法并将返回值块的输出。

块对话框的C函数在输出代码领域显示代码块。

如果一个类构造函数或其他类方法获得多维数组的数据模型或通过这些数据仿真软件,您必须指定正确的阵列布局来达到预期的结果,至于其他自定义代码的功能。金宝app看到一天数组处理。指示的阵列布局对话框中的一个类方法异常的函数,函数名,使用语法类名称::MethodName

阵列布局定制代码功能对话框。列出三个函数名,所有从“myClass::”。

限制

C函数块不能用于直接访问所有的c++类。不支持这些类型的类:金宝app

  • 模板类

  • 标准模板库(STL)容器

  • 类私有构造函数和析构函数

在这种情况下,您可以访问c++类的数据成员和方法间接地通过编写和调用C风格的包装器函数。例如,看到的调用c++类方法使用一个C风格的包装器函数从一个C函数块

表达式用于仅限于字面常量和构造函数参数参数常数符号。这样表达可能不调用其他函数或全局变量的访问。

C函数块不能调用重载函数不是类方法。

不支持这些操作的代码金宝appC函数布洛克:

  • 复制和分配一个类对象

  • 一个类对象传递给一个函数或方法,通过价值或参考

  • 显式地调用类的构造函数或析构函数

  • 定义一个类

  • 访问类的静态数据成员

  • 访问多维数据类的成员

相关的话题