我有一個向量類,我希望能夠從QTextStream對象中輸入/輸出。我的矢量類的向前聲明:Visual C++沒有看到operator << overload
namespace util {
template <size_t dim, typename T>
class Vector;
}
我定義operator<<
爲:
namespace util {
template <size_t dim, typename T>
QTextStream& operator<<(QTextStream& out, const util::Vector<dim,T>& vec)
{
...
}
template <size_t dim, typename T>
QTextStream& operator>>(QTextStream& in,util::Vector<dim,T>& vec)
{
..
}
}
但是,如果我將ty使用這些運營商時,Visual C++返回此錯誤:
error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'QTextStream' (or there is no acceptable conversion)
我試過幾件事:
- 最初,這些方法被定義爲模板的朋友,並且它使用g ++很好地工作。
- 該方法已被移動到命名空間util之外
- 我改變了模板的定義以適應我在各種Visual C++網站上找到的內容。
原來的朋友聲明:
friend QTextStream& operator>>(QTextStream& ss, Vector& in) { ... }
的 「VISUAL C++改編的」 版本是:
friend QTextStream& operator>> <dim,T>(QTextStream& ss, Vector<dim,T>& in);
與功能在課前預申報後實施。我檢查了該文件是否正確使用:
#pragma message ("Including vector header")
而且一切似乎都很好。沒有人知道什麼可能是錯的?
說明:運營商的定義甚至不會出現在運營商列表< <找到。
請提供您嘗試使用操作員時的使用案例 – 2010-05-19 18:08:24
當您在使用時,請提供完整的,可編譯的(或不是)代碼示例。 – Thomas 2010-05-19 18:11:28
不幸的是,試圖減小程序的大小可以解決問題。它似乎是一個奇怪的東西:( – PierreBdR 2010-05-19 19:24:33