#include<iostream>
#include<math.h>
#define PI 3.14
using namespace std;
class point
{
public:
double distance(int c,int d);
};
class Circle
{
public:
int r,s,a,b;
Circle();
~Circle();
void cla();
void location(int c,int d);
friend double point::distance(int c,int d);
};
Circle::Circle ()
{
r=3;
a=0;
b=0;
cout<<"该圆的坐标为"<<a<<","<<b<<"\n"<<endl;
cout<<"该圆的半径为"<<r<<endl;
}
Circle::~Circle(){}
double point::distance(int c,int d)
{
int p;
p=sqrt((c-a)*(c-a)+(d-b)*(d-b));
return p;
}
void Circle::cla()
{
s=2*PI*r*r;
cout<<"该圆的面积为"<<s<<"\n"<<endl;
}
void Circle::location(int c,int d)
{
int L;
L=(a-c)*(a-c)+(b-d)*(b-d);
if(L>r*r)
{
std::cout<<"该点位于圆外\n"<<endl;
}
if(L<r*r)
{
std::cout<<"该点位于圆内\n"<<endl;
}
if(L=r*r)
{
std::cout<<"该点位于圆上\n"<<endl;
}
}
int main()
{
int c,d,m;
cout<<"input two point"<<endl;
cin>>c>>d;
Circle cir1;
cir1.cla();
cir1.location(c,d);
m=distance(c,d);
cout<<"该点到圆心的距离为:"<<m;
return 0;
}
point这个函数是circle类的友元函数,a,b在circle内设为了public的,但point还是调用不了circle中的a,b,为啥子?该怎么改才能调用?问了周围两三个同学都没找出原因,求大佬帮助
图片中有错误的地方
首先,point::distance函数应该定义为static,因为distance()函数必须通过point类的实例对象才能访问
其次,你在distance()函数内调用a和b干什么?它们是Circle类的成员变量,要通过Circle类的对象才能访问,直接访问当然不行了
|