我想让类保持简单并且不定义构造函数,这样我就可以执行 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};如果可以的话我更愿意保留它。

有帮助吗?

解决方案

我敢肯定不合格Pt_t在你的身体的功能是Pt_t<T>,但你不希望它被Pt_t<T2>?你需要明确限定它。

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top