聪明的懒洋洋₽ 2023-04-15 14:20 采纳率: 42.9%
浏览 19
已结题

关于#c++#的问题,如何解决?

我想编辑一个关于点 圆 柱体的三个类,然后我在编译圆的时候定义了一个r半径,但编译器一直说[Error] invalid use of non-static data member 'Circle::r'是因为非静态成员变量的原因吗,哪位大佬帮我这个菜鸟解读一下,还要就是显示函数问题我也没搞懂哭了

img

#include<iostream>
using namespace std;
class Point{
    friend ostream& operator<<(ostream &output,const Point &c){
        cout<<c.x<<","<<c.y<<endl;return output;
    }
    protected:
        int x,y;
    public:
        Point(int n=0,int i=0){setPoint(n,i);}
        setPoint(int p,int q){x=p;y=q;}
};
class Circle:public Point{
    protected:
        int r;
    public:
        Circle(int n,int i,int j):Point(n,i){setCircle(j);}
        setCircle(int j){r=j;}
        int Area()const{return r*r*3.14;}
        friend ostream& operator<<(ostream &output,const Circle &c){
        cout<<"Center:"<<"["<<c.x<<","<<c.y<<"]"<<endl;
        cout<<"The r="<<r<<endl;
        cout<<"area:"<<Area();
        return output;
    }
};
class Cylinder:public Circle{
    protected:
        int h;
    public:
        friend ostream& operator<<(ostream &output,const Cylinder &c){
        cout<<"Center:"<<"["<<c.x<<","<<c.y<<"]"<<endl;
        cout<<"The r="<<r<<endl;
        cout<<"area:"<<Area();
        cout<<"volume:"<<volume();
        return output;
    }
    Cylinder(int i,int j,int k,int e):Circle(i,j,k){setHigh(e);}
    setHigh(int n){h=n;}
    int volume()const{return Area()*h;}
};
int main(){
    Cylinder obj1(1,2,3,4);
    cout<<obj1<<endl;
}

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-04-15 14:29
    关注

    帮你修改如下:

    #include<iostream>
    using namespace std;
    class Point{
        friend ostream& operator<<(ostream &output,const Point &c){
            cout<<c.x<<","<<c.y<<endl;return output;
        }
        protected:
            int x,y;
        public:
            Point(int n=0,int i=0){setPoint(n,i);}
            void setPoint(int p,int q){x=p;y=q;}  // 返回值 void
    };
    class Circle:public Point{
        protected:
            int r;
        public:
            Circle(int n,int i,int j):Point(n,i){setCircle(j);}
            void setCircle(int j){r=j;} // 返回值 void
            int Area()const{return r*r*3.14;}
            friend ostream& operator<<(ostream &output,const Circle &c){
                cout<<"Center:"<<"["<<c.x<<","<<c.y<<"]"<<endl;
                cout<<"The r="<<c.r<<endl; // 修改
                cout<<"area:"<<c.Area(); // 修改
                return output;
            }
    };
    class Cylinder:public Circle{
        protected:
            int h;
        public:
            friend ostream& operator<<(ostream &output,const Cylinder &c){
                cout<<"Center:"<<"["<<c.x<<","<<c.y<<"]"<<endl;
                cout<<"The r="<<c.r<<endl; // 修改
                cout<<"area:"<<c.Area(); // 修改
                cout<<"volume:"<<c.volume(); // 修改
                return output;
            }
            Cylinder(int i,int j,int k,int e):Circle(i,j,k){setHigh(e);}
            void setHigh(int n){h=n;} // 返回值 void
            int volume()const{return Area()*h;}
    };
    int main(){
        Cylinder obj1(1,2,3,4);
        cout<<obj1<<endl;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败