簡體   English   中英

重載c ++中的比較運算符

[英]Overloading Comparison Operators in c++

如何重載運算符,以便可以比較兩個頂點指針?

class graph
{
private:
class vertex;
class edge;

class vertex
{
public:
    int index;
    int estDistanceToGoal;
    int traveledDis;
    string location;

這是當我重載>運算符時的示例。 問題是當我有一個頂點對象與一個頂點指針進行比較時,這種方法在觸發器上起作用。

    bool operator> (vertex* v)
    {
                    cout<<"we did this"<<endl;
        return (this->weight > v->weight);
    }

這是我用來測試的示例。 如果我有一個頂點對象和一個頂點指針進行比較,它只會打印“我們做到了”。 那么,如何比較兩個頂點指針呢? 你能尊重“這個”嗎?

    void test()
{
    vertex*a = new vertex("wj",5);
    vertex*v = new vertex("something",2);

    if(a == v)
    {
        cout<<"what"<<endl;
    }
    else
    {
        cout<<"k"<<endl;
    }
}

謝天謝地,你不能。 所有比較運算符對於任何類型的指針都已經具有完善的行為。 除非至少一個參數是用戶定義的類型,否則您不能重載運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM