C++ 模板的跟
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;
来告诉编译器这是一个依赖性类型,而不是一个值。
定义类模板时候 我感觉这俩没啥区别啊。。。。。
------解决方案--------------------
就是对于一个依赖性的名称,必须使用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;
来告诉编译器这是一个依赖性类型,而不是一个值。