模糊类继承 [英] Ambiguous class inheritance

查看:166
本文介绍了模糊类继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  #include< iostream> 
#include< cmath>
using namespace std;
class Tcirculo {
float radio;
float diametro;
float area;
public:
void carea(float r){radio = r;区域=(M_PI *((r * r)));}
float cdiam(float r){diametro = 2 * r; return diametro;}
float getr(){return radio;}
float getd(){return diametro;}
float geta(){return area;}
$ b b};


class Trectangulo:public Tcirculo {
float altura;
public:
浮点计算(float h,float r){altura = h;
float arearec = getd()* h; return arearec;}
};

类Tcilindro:public Tcirculo,Trectangulo {
float xx,bb;
public:
Tcilindro(float a,float b){xx = a; bb = b;}
float area_total();
};

float Tcilindro :: area_total(){
int area;
area =((2 *((getd())))+ calca(bb,xx));
return area;
}
int main(int argc,char * argv []){

return 0;
}

但问题是:


$ b b

 警告:由于含糊不清,在'Tcilindro'中无法访问直接基本'Tcirculo'

在成员函数'float Tcilindro :: area_total()':

 错误:对'geta'的引用不明确
错误:候选是:float Tcirculo :: geta()
错误:float Tcirculo :: geta :引用'geta'是不明确的
错误:候选是:float Tcirculo :: geta()
错误:float Tcirculo :: geta()
pre>

解决方案

没有必要从<$ c中导出 Tcilindro $ c> Tcirculo ,如果您从 Trectangulo 中导出它就足够了。


#include <iostream>
#include <cmath>
using namespace std;
class Tcirculo{
        float radio;
        float diametro;
        float area;
public:
        void carea(float r){radio= r; area=(M_PI*((r*r)));}
        float cdiam(float r) {diametro = 2*r; return diametro;}
        float getr(){return radio;}
        float getd(){return diametro;}
        float geta(){return area;}

};


class Trectangulo : public Tcirculo{
        float altura;
public:
        float calca(float h, float r){altura =h;
        float arearec = getd() * h; return arearec;}
};

class Tcilindro :  public Tcirculo ,Trectangulo{
        float xx,bb;
public:
        Tcilindro(float a, float b) {xx=a;bb=b;}
        float area_total();
};

float Tcilindro::area_total(){
        int area;
        area = ((2*((getd())))+calca(bb,xx));
        return area;
}
int main(int argc, char *argv[]) {

        return 0;
}

but the problem is :

warning: direct base 'Tcirculo' inaccessible in 'Tcilindro' due to ambiguity

In member function 'float Tcilindro::area_total()':

error: reference to 'geta' is ambiguous
error: candidates are: float Tcirculo::geta()
error:                 float Tcirculo::geta()
error: reference to 'geta' is ambiguous
error: candidates are: float Tcirculo::geta()
error:                 float Tcirculo::geta()

解决方案

There is no need to derive Tcilindro from Tcirculo, it is sufficient if you derive it from Trectangulo.

这篇关于模糊类继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆