首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SystemC构造函数,类

SystemC构造函数,类
EN

Stack Overflow用户
提问于 2012-01-30 02:25:08
回答 5查看 2K关注 0票数 2

我是systemc的新手。我有一个困惑。

我正在创建一个sc_module(hello_world)sc_ctor(hello_world)在花括号之间什么也没有,我在模块中只有一个简单的void say_hello()函数,它打印"hello world“。

sc_main中,我这样做了:

代码语言:javascript
运行
复制
hello_world hello; 
hello.say_hello();

但是,我收到一个错误,error C2228: left of '.say_hello' must have class/struct/union.

我试过了,它起作用了:

sc_main中,我这样做了:

代码语言:javascript
运行
复制
hello_world hello("hi "); 
hello.say_hello();

为什么它一开始就显示错误?我没有使用一个参数构造函数。

那么,它不应该是hello_world hello而不是hello_world hello("hi ")吗?我只是想和C++类做个比较。

EN

回答 5

Stack Overflow用户

发布于 2015-05-13 14:54:20

每个SystemC模块,无论是用宏SC_MODULE定义的,还是继承sc_module的,都需要有一个模块名称。SystemC模块的构造函数必须有一个sc_module_name类的参数。

在SystemC标准(IEEE Std 1666-2011)中

每个(直接或间接)从类sc_module派生的类都应该至少有一个构造函数。每个这样的构造函数都应该有且只有一个sc_module_name类的参数,但可以有sc_module_name以外的其他类的参数。该参数不需要是构造函数的第一个参数。

如果你使用的是宏SC_CTOR,它实际上是一个只有一个sc_module_name参数的构造函数!

在sc_module.h中:

代码语言:javascript
运行
复制
#define SC_CTOR(user_module_name)                           \
    typedef user_module_name SC_CURRENT_USER_MODULE;        \
    user_module_name( ::sc_core::sc_module_name )
票数 3
EN

Stack Overflow用户

发布于 2012-05-04 23:19:37

我看不出有什么问题。

实际上,在我看来,您的代码与示例-> http://www.asic-world.com/systemc/first1.html相同

我希望你能用这个来核对一下你的。

票数 1
EN

Stack Overflow用户

发布于 2012-05-10 18:59:15

SC_CTOR已经为您创建了一个hello(const sc_module_name name&)构造函数。因此,编译器不会生成可供调用的默认构造函数,也不能创建对象hello。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9055580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档