C++ 实体不是球体的模糊基底

C++ 实体不是球体的模糊基底,c++,C++,我如何修复这个错误,因为我以前从未遇到过这个错误。你能帮我吗 class Solid { public: virtual void input()=0; virtual void output()=0; virtual float area()=0; }; class Cylinder:public Solid { protected: float r,h; public: void input() { cout<<"Radi

我如何修复这个错误,因为我以前从未遇到过这个错误。你能帮我吗

class Solid
{
public:
    virtual void input()=0;
    virtual void output()=0;
    virtual float area()=0;
};
class Cylinder:public Solid
{
protected:
 float r,h;
public:
    void input()
    {
        cout<<"Radius:";cin>>r;
        cout<<"Height:";cin>>h;
    }
   float area()
    {
        return (2*3.14*r*r)+(h*(2*3.14*r));
    }
   void output()
    {
        cout<<r<<"\t"<<h<<"\t"<<area()<<endl;
    }
};
class sphere:public Solid,public Cylinder
{
public:
     void output()
    {
        cout<<r<<"\t"<<area();
    }
    float area()
    {
        return 2*3.14*r*r;
    }

};
int main()
{
    Solid *a;
    Cylinder c;
        a=&c;
        a->input();
        a->output();

   sphere h;
        a=&h;
        a->input();
        a->output();

}
类实体
{
公众:
虚空输入()=0;
虚空输出()=0;
虚拟浮动区()=0;
};
类别:公共固体
{
受保护的:
浮动r,h;
公众:
无效输入()
{
库特;
库思;
}
浮动区()
{
返回值(2*3.14*r*r)+(h*(2*3.14*r));
}
无效输出()
{

cout
sphere
以两种方式从
Solid
继承:直接继承和通过
圆柱体
间接继承。由于继承是非虚拟的,这意味着它包含两个不同的
Solid
子对象,使得到
Solid的转换不明确

在这种情况下,解决方案非常简单:球体不是圆柱体,因此
sphere
不应继承
column