繁体   English   中英

运算符重载<<错误

[英]Operator overloading << error

我收到编译器错误

no match for 'operator<<' in 'std::cout << VertexPriority(2, 4u)' 

在引用此运算符重载的主类中,但是我无法理解错误的位置。

这里有运算符重载线,我在类定义中实现了它。

std::ostream& operator<<(std::ostream& out) const { return out << "Vertex: " << this->vertex << ", Priority: " << this->priority; }

顶点和优先级是整数和无符号整数。

在主类中,我试图这样做:

std::cout << VertexPriority(2, 3) << std::endl;

像这样定义它:

class VertexPriority {
    ...

    friend std::ostream& operator<< (std::ostream& out, const VertexPriority& vp);
};

std::ostream& operator<< (std::ostream& out, const VertexPriority& vp) {
    return out << "Vertex: " << vp.vertex << ", Priority: " << vp.priority;
}

如果VertexPriority::vertexVertexPriority::priority不公开,则必须使用friend关键字。

如需更多帮助,请阅读本教程: http : //www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM