0
此代碼編譯並在CLion 1.2.4中運行,但GUI顯示錯誤(通過紅色下劃線),輸出嵌套涉及std::ostream
,如下所述。這意味着與std:cout
一起工作,並且它到目前爲止。在多個Typedef中嵌套重載'<<'
Point
是k維空間中的一個點(矢量)。
Cluster
是一組這些點(鏈表)。
Clusters
是一組聚類(一個向量)。
當我用父類替換typedefs時(std::vector<double>
對於Point
),指示的錯誤仍然存在。
這個錯誤被錯誤報告的理由嗎?
typedef std::vector<double>Point;
typedef std::list<Point>Cluster;
typedef std::vector<Cluster>Clusters;
std::ostream& operator<< (std::ostream& os, Point& v) {
if (!v.empty()) {
os << v[0];
for(ctr_type i = 1; i < v.size(); ++i)
os << ", " << v[i];
}
return os;
}
std::ostream& operator<< (std::ostream& os, Cluster& v) {
if (!v.empty()) {
for(Cluster::iterator iter = v.begin(); iter != v.end(); iter++) {
os << "\n";
os << *iter; // Error: Binary operator '<<' can't be applied to the expressions of type 'ostream' and 'Point'
}
}
return os;
}
std::ostream& operator<< (std::ostream& os, Clusters& v) {
if (!v.empty()) {
for(Clusters::iterator iter = v.begin(); iter != v.end(); iter++) {
os << *iter; // Error: Binary operator '<<' can't be applied to the expressions of type 'ostream' and 'Cluster'
}
}
return os;
}
編輯:添加截圖通過Quuxplusone的要求。
此外,大多數圍繞這一問題的bug報告似乎圍繞着琴絃。
這個問題會更好,如果你包含了紅色下劃線問題的圖像(和錯誤信息,如果有的話),還包括一些你已經搜索過CLion bug數據庫的證據(或者提交了一個bug)。實際的答案可能與錯誤信息的文本一樣簡單:例如,「你不能在'std'命名空間中爲庫類型重載'operator <<',或者」RHS參數應該是const-合格「,或其他。 – Quuxplusone
啊 - 試圖簡潔。我很抱歉。我認爲在代碼中指示以及截圖可能已經過度... – Miller
從Code Review遷移,因爲這不是尋求開放式的批評。相反,它是要求對特定問題進行解釋或修復。 –