所以,我剛剛離開考試,最後一個問題有一個問題,需要你找到兩個圓圈是否重疊,以給定它們的中心點(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