1

コンパイラエラーが発生します

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

1 に答える 1

2

次のように定義します。

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

または公開されていない場合は、friendキーワードが必要です。VertexPriority::vertexVertexPriority::priority

詳細については、次のチュートリアルを参照してください: http://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/

于 2013-11-03T10:41:59.500 に答える