我是systemc的新手。我有一个困惑。
我正在创建一个sc_module(hello_world)。sc_ctor(hello_world)在花括号之间什么也没有,我在模块中只有一个简单的void say_hello()函数,它打印"hello world“。
在sc_main中,我这样做了:
hello_world hello;
hello.say_hello();但是,我收到一个错误,error C2228: left of '.say_hello' must have class/struct/union.
我试过了,它起作用了:
在sc_main中,我这样做了:
hello_world hello("hi ");
hello.say_hello();为什么它一开始就显示错误?我没有使用一个参数构造函数。
那么,它不应该是hello_world hello而不是hello_world hello("hi ")吗?我只是想和C++类做个比较。
发布于 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中:
#define SC_CTOR(user_module_name) \
typedef user_module_name SC_CURRENT_USER_MODULE; \
user_module_name( ::sc_core::sc_module_name )发布于 2012-05-04 23:19:37
我看不出有什么问题。
实际上,在我看来,您的代码与示例-> http://www.asic-world.com/systemc/first1.html相同
我希望你能用这个来核对一下你的。
发布于 2012-05-10 18:59:15
宏SC_CTOR已经为您创建了一个hello(const sc_module_name name&)构造函数。因此,编译器不会生成可供调用的默认构造函数,也不能创建对象hello。
https://stackoverflow.com/questions/9055580
复制相似问题