CPPTemplates template关键字的用法
来源:优易学  2011-11-13 17:01:20   【优易学:中国教育考试门户网】   资料下载   IT书店

  说明:

  限定符包括:::,.,->

  一、当类型名称具有以下性质是,就应该在该名称前面添加template前缀:

  1.名称出现在一个模板中

  2.名称是受限的

  3.名称不是用于指定基类继承的列表中,也不是位于引入构造函数的成员初始化列表中

  4.名称依赖于模板

  而且,只有当前面三个条件同时满足时才能使用前缀template,例如:

  template<typename T>

  struct S:X<T>:Base{

  S():X<T>::Base(typename X<T>::Base(0)){}

  X<T> f(){//不能使用template

  template X<T>::C *p;//指针p的声明

  X<T>::D *q;//乘积

  }

  typename X<int>::C * s;//可有可无,因为不符合第四条规定

  };

  struct U{

  X<int>::C * pc;//不能使用template,因为它并不是在模板中使用,U不是模板

  };

  二、如果一个模板名称是依赖型名称,需要在该名称前插入template关键字

  例如:

  template<typename T,int N>

  class Weird{

  public:

  void casel(template Shell<T>::template In<N>::template Deep<N> * p){

  }

  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训