Перегрузка операторов сравнения в производном классе с правом частного наследования - PullRequest
3 голосов
/ 19 марта 2011

У меня здесь два класса.Базовый класс:

class A
{
    int x;
public:
    A(int n):x(n){}

    friend bool operator==(const A& left, const A& right)
    {return left.x==right.x;}
};

и производный класс, который наследуется от A в частном порядке:

class B : private A
{
    int y;
public:
    B(int n,int x):A(x),y(n){}
    friend bool operator==(const B& left, const B& right)
    {
        if(left.y==right.y)
        {/*do something here...*/}
        else{return false;}
    }
};

Я знаю, как сравнивать два экземпляра A: я просто представляю переменные-члены друг с другом,Но как я могу сравнить экземпляры B?два экземпляра могут легко иметь разные элементы «x» внутри связанных экземпляров «A», но я не знаю, как сравнить эти экземпляры друг с другом.

1 Ответ

3 голосов
/ 19 марта 2011

Вы можете привести экземпляры к A& и использовать оператор равенства для class A:

if (static_cast<A&>(left) == static_cast<A&>(right)) {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...