这是我的课程
#include <fstream>
#include <cstdlib>
#include <math.h>
#include <iomanip>
#include <iostream>
using namespace std;
class Point {
protected:
int x, y;
这是我要使用的重载运算符,它比较两点之间的差异。
double operator-(const Point &def){
return sqrt(pow((x-def.x),2.0)+
pow((y-def.y),2.0));
}
};
class Circle: public Point {
private:
int radius;
public:
Circle(){ //Point default const called implicitly
this->x=x;
this->y=y;
this->radius=radius;
}
void printCircleInfo() {
cout << x << " " << y << " " << radius << " " ;
}
bool operator=(const Circle &def){
return (x==def.x) & (y==def.y) & (radius==def.radius);
}
bool doIBumpIntoAnotherCircle(Circle anotherCircle){
在这里,我想使用重载算子将两点之间的距离与两个圆的组合半径进行比较。
if (anotherCircle.radius + radius >= operator-( Point def) )
return true;
return false;
}
};
int main(){
const int SIZE = 13;
Circle myCircleArry[SIZE] = { 5,3,9};
;
cout << myCircleArry[0] <<":";
ifstream Lab6DataFileHandle;
Lab6DataFileHandle.open("Lab6Data.txt");
while (!Lab6DataFileHandle.eof( )) {
for (int i = 1; i < SIZE; i++) {
Lab6DataFileHandle>>myCircleArry[i];
Lab6DataFileHandle>>myCircleArry[i];
Lab6DataFileHandle>>myCircleArry[i];
cout << endl;
if (myCircleArry[0].doIBumpIntoAnotherCircle(myCircleArry[i])) {
myCircleArry[i].printCircleInfo(); cout << " ; ";
If double operator=(const Point &def)}
{cout <<"*"
}
}
}
Lab6DataFileHandle.close();
}
}
如何将先前创建的重载运算符用作bool函数doIBumpIntoAnotherCircle的一部分?请在您的答案中留下一个例子,将不胜感激。谢谢您的时间。
答案 0 :(得分:0)
是的,您可以像这样直接使用从operator-
继承的Point
:
bool doIBumpIntoAnotherCircle(Circle anotherCircle){
if (anotherCircle.radius + radius >= *this - anotherCircle)
return true;
return false;
}
或更简单地说:
bool doIBumpIntoAnotherCircle(Circle anotherCircle){
return anotherCircle.radius + radius >= *this - anotherCircle;
}
此外,此函数应标记为const
,并应使用const&
来接受参数,如下所示:
bool doIBumpIntoAnotherCircle(Circle const &anotherCircle) const {