我正在尝试创建我拥有的向量类的typedef
。我在SO上也发现了类似的问题,但它们的重点是作为接受不同类型数据的模板的类,而我的类是基于整数的模板。
所以,我的班级是这样定义的:
namespace sc_dt {
template <int W> class sc_bv { ... }; //meaning systemc_bit_vector
}
我想使用typedef,这样就不必每次都输入sc_dt::
。但是,使用以下方法:
typedef sc_dt::sc_bv<int> sc_vector;
我收到以下错误:
模板参数列表中参数1的类型/值不匹配
我该如何解决?
答案 0 :(得分:5)
typedef
不能被模板化。但是,using
可以(并且可以达到预期的效果):
template<int W>
using sc_vector = sc_dt::sc_bv<W>;
答案 1 :(得分:5)
a.pie(values, labels=header, colors=colors, startangle=90, autopct='%.1f%%')
具有非类型模板参数。实例化namespace sc_dt {
template <int W> class sc_bv { ... } //meaning systemc_bit_vector
}
的对象时,需要为其提供一个sc_bv
常量,例如
int
如您所见,这与
不同sc_dt::sc_bv<2> foo;
在其中为其指定类型而不是值的地方。
如果您知道要为typedef sc_dt::sc_bv<int> sc_vector;
使用什么值,则可以使用
sc_vector
或者如果您只是想将typedef sc_dt::sc_bv<the_value_that_you_want_to_use> sc_vector;
作为类模板的新名称,则可以使用别名模板,如
sc_vector
然后可以让您像使用template<int value>
using sc_vector = sc_dt::sc_bv<value>;
sc_vector
答案 2 :(得分:3)
如果您不想每次都输入名称空间sc_dt::
,请using
名称空间或
using sc_dt::sc_bv;