运算符ThisClass()导致堆栈溢出

时间:2008-12-22 13:28:50

标签: c++ stack-overflow

我想让类保持简单并且没有定义构造函数,所以我可以做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; }
};

编译器不喜欢这样,并在返回pt时调用运算符Pt_t;从而获得堆栈溢出。我该如何防止这种情况?我能想到的唯一解决方案是让Pt_t使用构造函数去除Pt_t pt = {1,2};如果可以,我宁愿保留。

2 个答案:

答案 0 :(得分:5)

我很确定你的函数体中的不合格Pt_t是Pt_t<T>,但是你不希望它是Pt_t<T2>吗?您需要明确限定它。

答案 1 :(得分:1)

我不熟悉C ++,但是你在那里声明了正确的类型吗?

不应该是Pt_t<T2>而不仅仅是Pt_t吗?