您当前的位置: 首页 >  c++

插件开发

暂无认证

  • 2浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ typename关键词-模板类

插件开发 发布时间:2022-04-26 07:14:55 ,浏览量:2

文章目录
    • 1.typename
    • 2.作者答疑

1.typename

  在函数模板和类模板参数中,typename关键词和class关键词的作用一致。

template
class Class1{};

template
class Class1{};

  在模板中,它还有另外一种作用,辅助申明名称为类型。 这个使用还与typedef相关,当采用typedef定义一个类型,如果定义的内容依赖于模板参数时,就必须在内容前加typename关键词表示这是一个类型而不是变量。不加编译器会报错,这种使用场景在标准的泛型函数库里非常常见,范例代码如下:

template
class Class1{
public:
	/*此处将报错,因为编译器不确定T::tType 是一个类型还是一个成员变量,而typedef只能作用于类型。*/
    typedef T::tType _tType;//错误写法
    typedef typename T::tType _tType;//正确写法写法
};

  由于模板定义时不知道T::tType 是T的成员类型还是成员变量,其依赖于模板Temp实例化时传入的参数T,所以是依赖性名称,编译器会强制要求在前面加上typename。

2.作者答疑

  如有疑问,请留言。

关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0374s