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迁移,因为这不是寻求开放式的批评。相反,它是要求对特定问题进行解释或修复。 –