typename的作用
2017-05-19 15:07
148 查看
#include "stdafx.h"
#include <iostream>
using namespace std;
/*
用法一: 声明template参数时, 前缀关键字class和typename可以互换;
用法二: 使用关键字typename标识嵌套从属类型名称, 从属名称在class内呈嵌套装, 如T::const_iterator ;
*/
template <typename T>
class A
{
public:
//typename 指出下面紧跟着的名称是一个类型
typename T::iterator iter; //此处必须有typename ,不然歧义
typedef typename T::iterator iterator; //定义了T::iterator类型别名
};
class B
{
public:
typedef int* iterator;
};
int main()
{
A<B> a;
A<B>::iterator it;
cout << typeid(a).name() << endl;
cout << typeid(it).name() << endl;
return 0;
}
#include <iostream>
using namespace std;
/*
用法一: 声明template参数时, 前缀关键字class和typename可以互换;
用法二: 使用关键字typename标识嵌套从属类型名称, 从属名称在class内呈嵌套装, 如T::const_iterator ;
*/
template <typename T>
class A
{
public:
//typename 指出下面紧跟着的名称是一个类型
typename T::iterator iter; //此处必须有typename ,不然歧义
typedef typename T::iterator iterator; //定义了T::iterator类型别名
};
class B
{
public:
typedef int* iterator;
};
int main()
{
A<B> a;
A<B>::iterator it;
cout << typeid(a).name() << endl;
cout << typeid(it).name() << endl;
return 0;
}
相关文章推荐
- C++ typename关键字的作用
- C++ typename关键字的作用
- C++ typedef typename 作用
- <property name="typeAliasesPackage" value="cn.itcast.core.bean"/>的作用
- C++ typedef typename 作用
- C++ typedef typename 作用
- typedef typename 作用
- C++ typedef typename 作用
- %rowtype 作用
- <add name="MySqlSiteMapProvider" type="MySql.Web.SiteMap
- The type or namespace name 'MySql' could not be found .net 连接 MySql时的错误
- response.setContentType()的作用及参数
- Class.forName("com.mysql.jdbc.Driver");的作用
- fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0×0409
- 表单中name和value的作用
- hibernate的两个特殊注解@Transienth和@Enumerated(EnumType.STRING)和@Table(name="_teacher"),忽略,定义枚举,定义表名
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- 引用 使用JDBC时Class.forName()的作用
- C++ typename 用法
- unknown type name''",did you mean""