1

在主题中,我需要使用指针的运算符,所以我不必调用*a>*bbut a>b。例如,我的操作员<<使用指针 ok:

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
4

2 回答 2

1

不幸的是,没有办法用两个指针值重载运算符。这与这种重载运算符的歧义有关。

*但是,您可以使用引用来执行此操作 - 但如果您想保留指针,您仍然需要使用运算符:

friend bool operator> (Para const &p1, Para const &p2){
    return p1.wrt > p2.wrt;
}
于 2013-04-30T02:05:00.593 回答
1

您的重载 << 有效,因为它是在 ostream 对象 (ostream.operator<<()) 上调用的。

operator < 的指针重载不起作用,因为指针不是类,因此以下内容毫无意义:(const Para*).operator<()。

于 2013-04-30T03:17:18.820 回答