typename T::SubType * ptr;】的更多相关文章

#include <iostream> using namespace std; template<class T> class MyClass{ public: typename T::SubType * ptr;//vc6里面,此处“typename”可有可无,vs2010里面,此处“typename”必须有 }; class Test{ public: typedef int SubType; }; void main() { MyClass<Test> t; i…
typename关键字是C++在标准化过程中被引入的,目的在于向编译器说明template内的某个标识符是个类型. 如:template <typename T> class MyClass { typename T::SubType *ptr; ... } 在这里,第二个typename关键字的意思是:SubType是class T内部定义的一个类型,从而ptr是一个指向T::SubType类型的指针 如果没有关键字typename,SubType会被认为是class T的一个static成…
我们都知道,在STL中基本上都使用了模板类的声明,即template.在模板类的声明中,我们有两种方式: template <class T> template <typename T> 在这里,class和typename是相同的.也就是说,在声明一个template type parameter(模板类型参数)的时候,class和typename意味着 完全相同的东西. 但是,在C++中,有的时候必须要使用typename.下面我们列举下面一个例子. 关键字typename被用…
泛型编程就是以独立于任何特定类型的方式编写代码,而模板是C++泛型编程的基础. 所谓template,是针对“一个或多个尚未明确的类型”所编写的函数或类. 使用template时,可以显示的或隐示的将类型当作参数来传递. 下面是一个典型的例子,传回两数中的较大者: template<class T> inline const T& MAX(const T& a,const T& b) { return a>b?a:b; } 在这里,第一行将T定义为任意数据类型,于…
1.对于T是自定义类型的,如果存在子类型则需要在模版内部加上typename 示例代码: template<typename T> class Myclass { typename T::SubType *ptr;//需要加上typename不然编译器可能误解为是静态对象SubType和ptr相乘 }; 2.类模版里对基类成员函数的调用使用BASE::exit();和this->,避免调用的是外部全局函数,但是在vc6.0上面这条规则是先调用的BASE里面的函数. 示例代码: #incl…
template 模板 1.出于通用性考虑,程序库中几乎所有东西都被设计为template形式,不支持template几乎不能使用标准程序库. 2.所谓template,是针对"一个或多个尚未明确的类型"所撰写的函数或类.使用template时,可以显示地(explicitly)或隐式地(implicitly)将类型当作参数传递. 3.目前唯一能让"template的运用"具有可移植的方式,就是在头文件中以inline function实现template func…
抱着本厚厚的<C++标准库>读了几天,想想也该写点关于用法的总结,一来怕今后容易忘记,二来将书上的事例重新敲一遍,巩固对程序库相关知识的了解.今天开第一篇,以后不固定更新.当然,笔者所读为该书为基于C++98的第一版,已有一定的年代感,不过虽然C++11的推出已有一定的时日,但是在普及上还需要一定的时间,因而,这本中文译本还是有一定的可读性的.这本书更新的版本为英文第二版,很遗憾还未出现其中文译本. 由于是开篇,本文所讲都很基础,但这些基础内容对后面的学习是非常重要的. 1  C++标准 C+…
<C++ Template>对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值).------------------------------------------------------------------------------------------------------------第一章 前言1.4 编程风格(1)对“常整数”趋向使用“int const”,而不是使用“const…
<C++ Template>对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值).------------------------------------------------------------------------------------------------------------第一章 前言1.4 编程风格(1)对“常整数”趋向使用“int const”,而不是使用“const…
本篇博客笔记顺序大体按照<C++标准程序库(第1版)>各章节顺序编排. -------------------------------------------------------------------------------------------- 2. C++及其标准程序库简介 2.2-1 注意:如果要把一个template中的某个标识符号指定为一种型别,就算意图显而易见,关键字typename也不可或缺,因此C++的一般规则是,除了以typename修饰之外,template内的任…