声明SystemC类型sc_fix的向量

时间:2018-01-24 19:36:56

标签: c++ vector systemc

我正在尝试制作std::vector类型sc_fix。我知道我可以std::vector<sc_fixed<WL,IWL, ...>> name;。但是,我想使用非模板版本sc_fixed。但是我不确定如何实例化这个向量并设置字和整数位长度,因为我无法声明它与模板化版本相同。

我试过制作一个数组来填充相同类型的内存空间,但这也给了我一个错误。

sc_fix* img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;
std::vector<sc_fix> img (img_num, img_num+sizeof(img_num) / sizeof(img_num[0]));

这给了我错误

Main_Test.cpp: In function ‘int sc_main(int, char**)’:
Main_Test.cpp:24: error: initializer expression list treated as compound expression
Main_Test.cpp:24: error: cannot convert ‘sc_dt::sc_o_mode’ to ‘sc_dt::sc_fix*’ in initialization
make: *** [Main_Test] Error 1

导致此错误的原因是什么?如何解决?

1 个答案:

答案 0 :(得分:2)

您必须在*声明sc_fix类型的变量,而不是指向sc_fix的指针后删除sc_fix*,并调用它的构造函数:

sc_fix img_num (32, 15, SC_RND_ZERO, SC_SAT_ZERO);

编译器尝试初始化指针并抱怨提供的初始化太多。

但我认为你想要做的是分配4个数字的向量:

std::vector<sc_fix> img_num (4, sc_fix(32, 15, SC_RND_ZERO, SC_SAT_ZERO));
img_num[0] = 12.12;
img_num[1] = 12.12;
img_num[2] = 12.12;
img_num[3] = 12.12;