1

我想保持类简单而不是定义构造函数,所以我可以做 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}; 如果可以的话,我更愿意保留它。

4

2 回答 2

5

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

于 2008-12-22T13:40:51.693 回答
1

我对 C++ 不熟悉,但是您是否在您的方法中声明了正确的类型?

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

于 2008-12-22T13:40:18.323 回答