template
<
class
T
>
class A
... {
private:
T value;
public:
void assign(const A<T>&x)
...{
value=x.value;
}
} ;
template < class T >
class B
... {
private:
T value;
public:
template <class X>
void assign(const B<X>&x)
...{
value=x.getValue(); //注意:x.getValue()不能换成x.value;
}
T getValue() const
...{
return value;
}
} ;
int main()
... {
A<int > a;
A<double> b;
a.assign(b); //error
B<int > c;
B<double> d;
c.assign(d);
return 0;
}
class A
... {
private:
T value;
public:
void assign(const A<T>&x)
...{
value=x.value;
}
} ;
template < class T >
class B
... {
private:
T value;
public:
template <class X>
void assign(const B<X>&x)
...{
value=x.getValue(); //注意:x.getValue()不能换成x.value;
}
T getValue() const
...{
return value;
}
} ;
int main()
... {
A<int > a;
A<double> b;
a.assign(b); //error
B<int > c;
B<double> d;
c.assign(d);
return 0;
}