在派生类右私有继承中重载比较运算符

时间:2011-03-19 01:52:23

标签: c++ inheritance operator-overloading

我这里有两节课。基类:

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的实例呢?两个实例很容易在其关联的“A”实例中包含不同的“x”成员,但我不知道如何将这些实例相互比较。

1 个答案:

答案 0 :(得分:3)

您可以将实例强制转换为A&并使用class A的等于运算符:

if (static_cast<A&>(left) == static_cast<A&>(right)) {
    // ...
}