gpt4 book ai didi

C++:模板类的Typedef

转载 作者:太空宇宙 更新时间:2023-11-04 14:38:58 31 4
gpt4 key购买 nike

我正在尝试创建我拥有的 vector 类的 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;

我收到以下错误:

Type/value mismatch at argument 1 in template argument list

我该如何解决这个问题?

最佳答案

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

sc_vector<some_value> foo;

关于C++:模板类的Typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609380/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com