`

c++模板(类型依赖)说明例子

    博客分类:
  • c++
 
阅读更多

#include <iostream>
#include <list>
template <typename T>
class CCustomerList
{
public:
	void push(T item)
	{
		m_customer.push_back(item);
	}
	void show_item()
	{
		CCIterator it = m_customer.begin();
		while(it != m_customer.end())
		{
			std::cout<<(*it)<<std::endl;
			++it;
		}
	}
private:
	typedef std::list<T> CustomerContainer;
	typedef typename CustomerContainer::iterator CCIterator;
	CustomerContainer m_customer;
};
int main(int argc, char *argv[])
{
	CCustomerList<int> c;
	for(int i=0; i<10; ++i) c.push(i);
	c.show_item();
	return 0;
}
 这里说的是CCustomerList里的

typedef typename CustomerContainer::iterator CCIterator;

语句。
在这条语句中必须加上typename关键字,不然编译时会报错。
根据《effective STL》里的解释: CustomerContainer::iterator 是一个依赖形式类型参数T的一种类型,所以必须在它前面放上typename这个词。
template关键字还可以用在中间:
Template names can not only occur after a :: but also after a -> or . in a class member access. You need to insert the keyword there too.
如:Protocol_v2<alloc_t> * pack = alloc->template malloc<Protocol_v2<alloc_t> >();

更多内容见:
分享到:
评论

相关推荐

    C++编程思想习题

    9.4静态初始化的依赖因素 9.5转换连接指定 9.6小结 9.7练习 第10章 引用和拷贝构造函数 10.1C++中的指针 10.2C+十中的引用 10.2.1函数中的引用 10.2.2参数传递准则 10.3拷贝构造函数 10.3.1传值方式传递和返回 ...

    C++编程思想.pdf

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    C++ 语言 详细教程电子版

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    C++编程思想 pdf

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    C++编程思想(中文版) chm

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    c++学习经典图书:C++ 编程思想(全).rar

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    C++编程思想 (作者学习C++亲身体会及多年教学经验)

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    C++编程思想1-5 清晰PDF

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    C++编程思想

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出...

    C++编程思想(中文版)

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    C++编程思想——很实用的一本书

    动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。 目 录 译者序 前言 第1章 对象的...

    thinking in C++

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

    C编程思想--chinapub书籍--文本PDF

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    postgrespp:postgres ++异步C ++驱动程序是PostgreSQL中C ++中的薄libpq包装器,旨在使libpq易于使用。 它具有异步行为,并且依赖Boost.ASIO进行异步操作。 它为参数函数(例如PQsendQueryParams)使用C ++ 11可变参数模板

    Postgres ++ postgres ++是一个异步c ++ libpq包装器,旨在使libpq易于使用。 它被设计为极其简单和纤薄。 更安全,更轻松 它结合使用C ++ 11可变参数模板的功能和PQsendQueryParam。...例子 boost::asio

    fixed_string:固定大小的C ++ 17字符串

    可用作类非类型模板参数(自C ++ 20起) 例子 建造 constexpr fixstr::fixed_string foo = " foo " ; 级联 using namespace fixstr ; constexpr fixed_string first = " Hello, " ; constexpr fixed_string ...

    对话框模板,RegexTestVC源代码

    我想用 MFC 和 C++ 创建一个基于对话框的程序(主窗口本身是个对话框)。我不想使用资源(.rc)文件,而是想在内存中动态创建对话框。我在 MSDN 中找到一些线索,但没有发现代码例子。我了解到 DLGTEMPLATE 和 ...

    LuaBind 源码 (Lua增强库)

    她利用模板原编程技术实现.这意味着,你不需要额外的预处理过程去编译你的工程(编译器 会替你完成全部的工作).这还意味着,你也不需要(通常)知道你注册的每一个函数的精确的签名. 因为,LuaBind库会在编译时生成所需的...

    BackEndDocUniversity

    使用 KRAKENJS 构建先决条件:说明: 验证nodejs是否安装正确:在控制台写 $ node -v 应该会出现nodejs的版本使用 KrakenJS 创建项目模板。 按照主页上的说明进行操作创建项目后,执行: $ npm start 应用程序应该...

Global site tag (gtag.js) - Google Analytics