目录
1--目录一览
tree -a
.
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ │ ├── 3.16.3
│ │ │ ├── CMakeCCompiler.cmake
│ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ ├── CMakeSystem.cmake
│ │ │ ├── CompilerIdC
│ │ │ │ ├── a.out
│ │ │ │ ├── CMakeCCompilerId.c
│ │ │ │ └── tmp
│ │ │ └── CompilerIdCXX
│ │ │ ├── a.out
│ │ │ ├── CMakeCXXCompilerId.cpp
│ │ │ └── tmp
│ │ ├── cmake.check_cache
│ │ ├── CMakeDirectoryInformation.cmake
│ │ ├── CMakeOutput.log
│ │ ├── CMakeTmp
│ │ ├── Makefile2
│ │ ├── Makefile.cmake
│ │ ├── progress.marks
│ │ ├── TargetDirectories.txt
│ │ └── test_exe.dir
│ │ ├── build.make
│ │ ├── cmake_clean.cmake
│ │ ├── CXX.includecache
│ │ ├── DependInfo.cmake
│ │ ├── depend.internal
│ │ ├── depend.make
│ │ ├── flags.make
│ │ ├── link.txt
│ │ ├── progress.make
│ │ ├── src
│ │ │ ├── circle.cpp.o
│ │ │ └── point.cpp.o
│ │ └── Test.cpp.o
│ ├── cmake_install.cmake
│ ├── Makefile
│ └── test_exe
├── CMakeLists.txt
├── include
│ ├── circle.h
│ └── point.h
├── src
│ ├── circle.cpp
│ └── point.cpp
├── Test.cpp
└── .vscode
└── c_cpp_properties.json
13 directories, 39 files
2--头文件include
① 点类 point.h
# pragma once
# include <iostream>
class Point{
public:
void setX(int x);
int getX();
void setY(int Y);
int getY();
private:
int X;
int Y;
};
② 圆类 circle.h
# pragma once
# include <iostream>
# include "point.h"
class Circle{
public:
void setR(int r);
int getR();
void setCenter(Point center);
Point getCenter();
private:
int R;
Point Center;
};
3--源文件src
① 点类 point.cpp
# include "point.h"
void Point::setX(int x){
X = x;
}
int Point::getX(){
return X;
}
void Point::setY(int y){
Y = y;
}
int Point::getY(){
return Y;
}
② 圆类 circle.cpp
# include "circle.h"
void Circle::setR(int r){
R = r;
}
int Circle::getR(){
return R;
}
void Circle::setCenter(Point center){
Center = center;
}
Point Circle::getCenter(){
return Center;
}
4--主函数
① Test.cpp
# include "point.h"
# include "circle.h"
void isInCircle(Circle &c, Point &p){
// 计算点与圆心的距离
int dist = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX())
+ (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
// 计算半径的平方
int R_2 = c.getR() * c.getR();
if (dist == R_2){
std::cout << "point on the circle !" << std::endl;
}
else if (dist > R_2){
std::cout << "point outside the circle !" << std::endl;
}
else {
std::cout << "point inside the circle !" << std::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);
return 0;
}
5--CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(Test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set(CMAKE_BUILD_TYPE Debug)
include_directories(./include)
add_executable(test_exe Test.cpp src/point.cpp src/circle.cpp)
6--编译、执行
mkdir build && cd build
cmake ..
make
./test_exe