所以,我刚刚离开考试,最后一个问题有一个问题,需要你找到两个圆圈是否重叠,以给定它们的中心点(x,y)和半径。然后您应该使用圆圈的构造函数调用该函数,并且您的功能类似于constructor.function(构造函数)如何将同一个类的对象传递给函数?
c1.overlaps(c2);
。
我不知道如何将c1和c2的值传递给函数。纵观一些其他的代码刚才好像我的函数声明应该与
void overlaps(Circle &a)
的论点Circle &a
开始将引用从上面Circle c2
,但我不知道如何Circle c1
和它的尊贵会被传入。
这是我写的代码:
#include <string>
#include <cmath>
using namespace std;
class Circle
{
private:
double x, y, radius;
public:
Circle(double &x, double &y, double &radius);
{
void overlaps(this);
}
};
void overlaps(this)
{
this -> c2;
double x3 = c2.x;
double y3 = c2.y;
double rad3 = c2.radius;
double z = pow(x3-x,2) + pow(y3-y,2);
double r = sqrt(z);
if(c2.radius + radius > r)
cout<<"The circles overlap.\n";
else
cout<<"The circles do not overlap\n";
};
int main()
{
double x1, x2, y1, y2, rad1, rad2;
cin>>x1>>y1>>rad1;
cin>>x2>>y2>>rad2;
Circle c1 = new Circle(x1, y1, rad1);
Circle c2 = new Circle(x2, y2, rad2);
c1.overlaps(c2);
}
这是尝试创建成员函数,但不是很好的一个。请继续阅读C++书中的相关章节! –
在你给出的例子中,重叠是Circle的一个成员函数。因此,您只需将第二个圆圈传递给第一个圆圈即可。重叠函数已经可以访问第一个数据。 – enhzflep
'Circle c1 = new Circle(x1,y1,rad1);' - 这不是Java,这不起作用。再一次,一本书可能是最好的补救措施。 – chris