# C++的调用其他类 # 1. 类中有其他的类 ```python #include using namespace std; //点和圆关系案例 //点类 class Point { public: //设置x void setX(int x) { m_X = x; } //获取x int getX() { return m_X; } //设置y void setY(int y) { m_Y = y; } //获取y int getY() { return m_Y; } private: int m_X; int m_Y; }; //圆类 class Circle { public: //设置半径 void setR(int r) { m_R = r; } //获取半径 int getR() { return m_R; } //设置圆心 void setCenter(Point center) { m_Center = center; } //获取圆心 Point getCenter() { return m_Center; } private: int m_R; //半径 Point m_Center; //圆心 //在类中可以让另一个类 作为本类中的成员 }; //判断点和圆关系 void isInCircle(Circle& c, Point& p) { //计算两点之间距离 平方 int distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY()); //c.getCenter()返回的是圆心点center类 //可以调用圆心点center类中的方法 //计算半径的平方 int rDistance = c.getR() * c.getR(); //判断关系 if (distance == rDistance) { cout << "点在圆上" << endl; } else if (distance > rDistance) { cout << "点在圆外" << endl; } else { cout << "点在圆内" << endl; } } int main() { //创建圆 Circle c; c.setR(10); Point center; center.setX(10); //设置点的横坐标 center.setY(0); //设置点的纵坐标 c.setCenter(center); //设置点类传入圆类 //创建点 Point p; p.setX(10); p.setY(10); //判断关系 isInCircle(c, p); system("pause"); return 0; } ``` 运行结果: - 点在圆上 - 请按任意键继续. . . # 2. 导入其他文件的类 ## 2.1 point.h头文件 ```python //这是point.h头文件 #pragma once //防止头文件重复包含,防止头文件冲突 #include //标准输入输出 using namespace std; //标准命名空间 //只要函数声明、变量声明 //成员函数只需要声明就好了,末尾有分号。 class Point { public: //设置x void setX(int x); //获取x int getX(); //设置y void setY(int y); //获取y int getY(); private: int m_X; int m_Y; }; ``` ## 2.2 point.cpp源文件 ```python //这是point.cpp源文件 #include "point.h" //定义函数时,要加上作用域,"双冒号::"表示Point作用域下的函数 void Point::setX(int x) { m_X = x; } //获取x int Point::getX() { return m_X; } //设置y void Point::setY(int y) { m_Y = y; } //获取y int Point::getY() { return m_Y; } ``` ## 2.3 circle.h头文件 ```python #pragma once #include //标准输出流 using namespace std; //标准命名空间 #include "Point.h" //一个类中用到另一个类,把另一个类包含的头文件包含进来 //圆类 class Circle { public: //设置半径 void setR(int r); //获取半径 int getR(); //设置圆心 void setCenter(Point center); //获取圆心 Point getCenter(); private: int m_R; //半径 Point m_Center; //圆心 //在类中可以让另一个类 作为本类中的成员 }; ``` ## 2.4 circle.cpp头文件 ```python //这是circle.cpp头文件 #include "circle.h" //设置半径 void Circle::setR(int r) { m_R = r; } //获取半径 int Circle::getR() { return m_R; } //设置圆心 void Circle::setCenter(Point center) { m_Center = center; } //获取圆心 Point Circle::getCenter() { return m_Center; } ``` ## 2.5 main.cpp文件 ```python //这个是主文件 .cpp文件 #include using namespace std; #include "circle.h" //想用点类,就要包含点类的头文件 #include "point.h" //想用圆类,就要包含点类的头文件 //判断点和圆关系 void isInCircle(Circle& c, Point& p) { //计算两点之间距离 平方 int distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY()); //c.getCenter()返回的是圆心点center类 //可以调用圆心点center类中的方法 //计算半径的平方 int rDistance = c.getR() * c.getR(); //判断关系 if (distance == rDistance) { cout << "点在圆上" << endl; } else if (distance > rDistance) { cout << "点在圆外" << endl; } else { cout << "点在圆内" << endl; } } int main() { //创建圆 Circle c; c.setR(10); Point center; center.setX(10); //设置点的横坐标 center.setY(0); //设置点的纵坐标 c.setCenter(center); //设置点类传入圆类 //创建点 Point p; p.setX(10); p.setY(10); //判断关系 isInCircle(c, p); system("pause"); return 0; } ```