繁体   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