首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 模板的<typename T>跟<class T>

2012-12-30 
C++ 模板的typename T和class T定义类模板时候 我感觉这俩没啥区别啊。。。。。[解决办法]就是对于一个依赖

C++ 模板的<typename T>和<class T>
定义类模板时候 我感觉这俩没啥区别啊。。。。。
[解决办法]
就是对于一个依赖性的名称,必须使用typename进行编译器提示:

比如:
template<class T>
class A {
public:
static const int value = 0;
void f()
{
  T::value_type* value;
  //...
}
};

这个地方

T::value_type* value;

可能会被编译器解释为T中的value_type和static member data value相乘。而开发者的目的是要定义一个局部指针value。这里value_type是一个依赖性的名字,它依赖于T的具体类型。因此,这里必须写成

typename T::value_type* value;

来告诉编译器这是一个依赖性类型,而不是一个值。

热点排行