问个非常深沉的问题,相同的名字为什么不同?templatetypename T class Btemplatetypename T class A {
问个非常深沉的问题,相同的名字为什么不同?
template<typename T>
class B;
template<typename T>
class A
{
public:
A(const A &a); //非限定名,等价于A(const A<T> &a);
B<T> *p; //必须指定类型参数
};
大家看上面两个类,类B和类A都使用了T,那两个类的T是不是同一个T?
[解决办法]
你要想用不同的,就得这么做
template<typename T,typename F>
class A
{
public:
A(const A &a); //非限定名,等价于A(const A<T> &a);
B<F> *p; //必须指定类型参数
};
这不是合乎常理么
