首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在派生类中使用继承运算符

在派生类中使用继承运算符
EN

Stack Overflow用户
提问于 2020-04-20 01:30:31
回答 1查看 31关注 0票数 0

在我的派生类的方法(menorTamanhoque())中使用重载的operator<时遇到了问题。

我这里有一个基类:

代码语言:javascript
运行
复制
class CAngulo
{
protected:
    int grau, minutos, segundos;
public:
    CAngulo(void);
    CAngulo(int g,int m, int s);
    CAngulo(const CAngulo &p);
    bool operator< (const CAngulo &p);

};

CAngulo :: CAngulo(void)
{
    grau=10;
    minutos=5;
    segundos=15;
}
CAngulo :: CAngulo(int g, int m ,int s)
{
    grau=g;
    minutos=m;
    segundos=s;
}
CAngulo :: CAngulo(const CAngulo &p)
{
    grau=p.grau;
    minutos=p.minutos;
    segundos=p.segundos;
}
bool CAngulo :: operator < (const CAngulo &p)
{
    if(grau>p.grau)
        return(false);
    else if(grau<p.grau)
            return(true);
    else if(grau==p.grau)
    {
        if(minutos>p.minutos) return(false);
        else if(minutos<p.minutos) return(true);
        else if(minutos==p.minutos)
        {
            if(segundos>p.segundos) return(false);
            else return(true);
        }

    }
}

在这里我有一个派生类,我想在其中使用上面的重载操作符:

代码语言:javascript
运行
复制
class CSetor : public CAngulo 
{ 
private:
    int raio;
public: 
    CSetor(void);
    CSetor(int g,int m, int s, int r);
    CSetor(const CSetor &p);
    bool menorTamanhoQue(const CSetor &a);
}; 
CSetor :: CSetor(void)
{
    grau=10;
    minutos=5;
    segundos=15;
    raio=10;
}
CSetor :: CSetor(int g, int m ,int s, int r)
{
    grau=g;
    minutos=m;
    segundos=s;
    raio=r;
}
CSetor :: CSetor(const CSetor &p)
{
    grau=p.grau;
    minutos=p.minutos;
    segundos=p.segundos;
    raio=p.raio;
}

bool CSetor :: menorTamanhoQue(const CSetor &a)
{
}

不知道如何实现最后一个方法menorTamanhoque (我必须使用oveloaded <来比较c和d,并检查这是否->raio< a.raio)

下面是主要内容,以便你们可以理解该程序的功能:

代码语言:javascript
运行
复制
int main()
{
    CAngulo a(10,10,10);
    CAngulo b(20,20,20);
    CSetor c(10,20,30,5);
    CSetor d(20,40,40,15);

    if(a < b) cout<<"a e menor que b"<<endl;
    else cout<<"a e maior que b"<<endl;

    if(c.menorTamanhoQue(d)) cout<<"c e menor que d"<<endl;
    else cout<<"c e maior que d"<<endl;

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-20 01:35:35

首先,您的menhorTamanhoQue声明有两个参数,但定义只有一个。

声明应该是

代码语言:javascript
运行
复制
bool menorTamanhoQue(const CSetor &a);

然后定义应该是

代码语言:javascript
运行
复制
bool CSetor::menorTamanhoQue(const CSetor &a)
{
    return this->CAngulo::operator<(a)  // explicitly call base class operator<
           && this->raio < a.raio;  // and check raio
}

这是一个demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61308728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档