为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候需要“type Name”关键字?

什么时候需要“type Name”关键字?

C++
RISEBY 2019-08-03 03:03:30
什么时候需要“type Name”关键字?考虑以下守则:template<class K>class C {     struct P {};     vector<P> vec;     void f();};template<class K> void C<K>::f() {     typename vector<P>::iterator p = vec.begin();}为什么在这个例子中“type Name”关键字是必需的?是否还有其他必须指定“type Name”的情况?
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

这个typename关键字,因为iterator上的依赖类型。P..编译器无法猜测iterator指一个值或一个类型,所以它假定它是一个值,除非你大喊大叫。typename..在任何类型或值都是有效的上下文中,只要存在依赖于模板参数的类型,就需要使用它。例如,作为基类typename不需要,因为基类必须是类型。

在同一主题上,有一个template关键字,用于让编译器知道某些依赖的名称是一个模板函数,而不是一个值。




查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信