如何使超载运营商与工作的指针(How to make an overload operator wh

2019-10-18 02:16发布

如在本我需要运营商将与指针的工作,所以我没有打电话给我们*a>*b ,但是a>b 。 例如我的运营商<<可与确定指针:

friend ostream& operator<< (ostream &wyjscie, Para const* ex){
    wyjscie << "(" << ex->wrt << ", " << ex->liczbaWystapien <<")"<< endl;
    return wyjscie;
}

但是这一次给我一个错误:

friend bool operator> (Para const *p1, Para const *p2){
        return p1->wrt > p2->wrt;
}

Error   1   error C2803: 'operator >' must have at least one formal parameter of class type

Answer 1:

不幸的是,不超载运营商有两个指针值的方式。 这与这样的重载运算符的不确定性做。

但是,你可以用引用做到这一点,而不是-但你仍然需要使用*如果你想保持指针操作:

friend bool operator> (Para const &p1, Para const &p2){
    return p1.wrt > p2.wrt;
}


Answer 2:

你重载<<作品,因为它正在一个ostream对象上调用(ostream.operator <<())。

操作者的指针过载<不起作用,因为指针不是类因此以下是没有意义的:(const的帕拉*)运算符<()。



文章来源: How to make an overload operator which works with pointers