c++ - 不明确的类继承

标签 c++ class inheritance multiple-inheritance ambiguous

#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;
}

但问题是:

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

在成员函数'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()

最佳答案

不需要从Tcirculo派生Tcilindro,从Trectangulo派生就足够了。

关于c++ - 不明确的类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793651/

相关文章:

c++ - C++中的多维数组排序

javascript - 为什么对象实例化后定义的属性不是自己的属性

c++ - 引用继承自派生类的QList

c++ - 使用 mex : Matlab crashes 将大矩阵从 Matlab 传递到 C

c++ - const char* 与字符串文字的使用

Java 类滥用 - 最佳实践

C++:将静态类成员与静态类成员的传递版本进行比较

java - Eclipse 与 Jenkins 中的 TestNG 继承行为

c++ - 具有多个签名的函数,尝试调用私有(private)子类而不是更通用的函数

java - JNI 错误 : Local reference table overflow 512 entries