[英]Accessing private class within a code error
您好,我需要帮助来访问和显示从基 class 派生的三个类的结果。它们是私有的,我很难这样做。 我根据我对 set and get 的理解自行搜索和尝试,但它不起作用。
#include<iostream>
using namespace std;
class Shape
{
private:
double height, width;
double radius;
public:
void set_data(int i)
{
height, width, radius = i;
}
void get_data()
{
cin>>height>>width>>radius;
}
virtual void display_area()=0;
};
class Triangle: public Shape
{
public:
void display_area()
{
cout<<"\nArea of triangle = "<<(height*width)/2;
};
};
class Rectangle : public Shape
{
public:
void display_area()
{
cout<<"\nArea of rectangle = "<<height*width;
}
};
class Circle: public Shape
{
public:
void display_area()
{
cout<<"\nArea of circle = "<<3.14*radius*radius;
}
};
int main()
{
Triangle t;
Shape *st = &t;
Rectangle r;
Shape *sr = &r;
Circle c;
Shape *sc = &c;
cout<<"Enter height and width: ";
t.set_data(2,6);
r.set_data(9,10);
c.set_data(3,6,4);
cout<<t.get_data()<<r.get_data()<<c.get_data();
return 0;
}
t.set_data(2,6);
r.set_data(9,10);
c.set_data(3,6,4);
cout<<t.get_data()<<r.get_data()<<c.get_data();
我知道在公共电话中访问私人电话 class 会带来错误,所以我尝试了整套电话并得到了,但我认为我仍然做错了,我需要一些指导/帮助。
你的set_data
function 只需要一个 integer。对于你试图用三个 arguments 调用它的圆圈。
一般的 class Shape
都有一个radius
作为属性。 这是没有意义的,因为有不使用它的派生类。
还。 你的get_data
function 会要求用户用键盘写一些数字。 它是一个 function,什么都不返回。 因此,当您编写cout << t.get_data()
时,不会打印任何内容,因为cout
从get_data
中什么也得不到。
您最好将Shape
视为接口。 即:强制所有派生类实现set_data
和display_area
,但不要在基类 class 中实现任何此逻辑,因为它太笼统了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.