У меня есть этот код.В основном я хочу использовать преобразование типов, но, используя отладку, я понимаю, что в этой строке
ob2 = (Point2D
конструктор шаблон
вызывается независимо от явного
перед ie шаблон <класс T1> явный Point2D (Point2D
Почему это происходит? Я ожидаю, что будет вызван оператор Point2D
.
template <class T>
class Point2D
{
public:
T x;
T y;
Point2D(T _x=0,T _y=0):x(_x),y(_y)
{
}
Point2D(Point2D& ob)
{
x=ob.x;
y=ob.y;
}
template <class T1>
Point2D(Point2D<T1>& ob)
{
x=ob.x;
y=ob.y;
}
template <class T1>
operator Point2D<T1>()
{
return Point2D<T1>(x,y);
}
};
int main()
{
Point2D<int> ob1(10,10);
Point2D<double> ob2(20,20);
ob2=(Point2D<double>)ob1;
return 0;
}