简体   繁体   中英

Operator overloading << error

I get the compiler error

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

In the main class referred to this operator overloading, but I can't undestand where the error is.

Here there is the operator overloading line, I implemented it inside the class definition.

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

vertex and priority are integer and unsigner integer.

In the main class I'm trying to doing this:

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

Define it like this:

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;
}

The friend keyword is necessary if VertexPriority::vertex or VertexPriority::priority are not public.

For more help, read this tutorial: http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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