#include <iostream>
using namespace std;
template<class T>
class MyClass{
private:
T value;
public:
void assign(const MyClass<T> & obj)
{
this->value=obj.value;
}
MyClass(T value)
{
this->value=value;
}
};
template<class T>
class MyClass2{
private:
T value;
public:
template<class X>
void assign(const MyClass2<X> & obj)
{
this->value=obj.getValue();
}
MyClass2(T value)
{
this->value=value;
}
T getValue() const
{
return this->value;
}
};
void main()
{
MyClass<double> d(2.3);
MyClass<double> i(5);//MyClass<int> i(5);
d.assign(i);
MyClass2<double> d2(2.3);
MyClass2<int> i2(5);
d2.assign(i2);
}