写在一个文件中main.cpp
#include <iostream>
#include <cmath>
#include "Point.h"
#include "ManagerPoint.h"
using namespace std;
//
//class Point; //前向声明
//
//class ManagerPoint
//{
//public:
// double Distance(Point& a, Point& b);
//};
//
//
//class Point
//{
//public:
// Point(double xx, double yy)
// {
// x = xx;
// y = yy;
// }
// void Getxy();
// friend double ManagerPoint::Distance(Point& a, Point& b);
//private:
// double x, y;
//};
//
//void Point::Getxy()
//{
// cout << "(" << x << "," << y << ")" << endl;
//}
//
//double ManagerPoint::Distance(Point& a, Point& b)
//{
// double dx = a.x - b.x;
// double dy = a.y - b.y;
// return sqrt(dx * dx + dy * dy);
//}
int main()
{
Point p1(3.0, 4.0), p2(6.0, 8.0);
p1.Getxy();
p2.Getxy();
ManagerPoint mp;
double d = mp.Distance(p1, p2);
cout << "Distance is" << d << endl;
return 0;
}
多文件写法
Point.h
#pragma once
#include "ManagerPoint.h"
class Point
{
public:
Point(double xx, double yy);
void Getxy();
friend double ManagerPoint::Distance(Point& a, Point& b);
private:
double x, y;
};
Point.cpp
#include "Point.h"
#include <iostream>
using namespace std;
Point::Point(double xx, double yy)
{
x = xx;
y = yy;
}
void Point::Getxy()
{
cout << "(" << x << "," << y << ")" << endl;
}
ManagerPoint.h
#pragma once
//#include "Point.h"
class Point;
class ManagerPoint
{
public:
double Distance(Point& a, Point& b);
//private:
};
ManagerPoint.cpp
#include "ManagerPoint.h"
#include <cmath>
#include "Point.h" //注意不要忘记此处包含头文件
double ManagerPoint::Distance(Point& a, Point& b)
{
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);
}