我想保持类简单,没有定义构造函数,所以我可以做Pt data = {0,5}; 所以我认为将Pt_t从短到长转换为最好的方式反之亦然就是做这样的事情.
template <class T>
struct Pt_t
{
T x, y;
template <class T2> operator Pt_t<T2>() { Pt_t pt = {x, y}; return pt; }
};
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢这样,并在返回pt时调用运算符Pt_t; 从而获得堆栈溢出.我该如何防止这种情况?我能想到的唯一解决方案是让Pt_t使用构造函数去除Pt_t pt = {1,2}; 如果可以,我宁愿保留.