读书人

C++ 模板的lt;typename Tgt;跟lt;class Tamp;gt

发布时间: 2012-12-30 10:43:15 作者: rapoo

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;

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

读书人网 >C++

热点推荐