模糊类继承 [英] Ambiguous class inheritance
本文介绍了模糊类继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#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'的引用不明确
pre>
错误:候选是:float Tcirculo :: geta()
错误:float Tcirculo :: geta :引用'geta'是不明确的
错误:候选是:float Tcirculo :: geta()
错误:float Tcirculo :: geta()
解决方案没有必要从<$ 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
fromTcirculo
, it is sufficient if you derive it fromTrectangulo
.这篇关于模糊类继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文