代码和在一起的时候本身是没有错的,但是分开成这3个文件就有错了,可以看看头文件哪里有问题吗?,qwq,谢谢帮忙
libai.cpp
在 libai.h 里面加上
#program once
避免多次包含,重复定义。
也可以用
#ifndef __libai_h__
#def __libai_h__
你原来的类定义
#endif
...
贴代码,可以帮你调试看看
```c++
//2.h
#ifndef _2_h_
#define _2_h_
class Point2D{
float x, y;
public:
friend class Circle;
friend float Distance(Point2D a,Point2D b);
Point2D(float x=0, float y=0)
{
this->x = x;
this->y = y;
}
};
class Circle{
Point2D center;
float radius;
static int Num;
public:
const float PI;
Circle(float,float,float);
void Setcenter(float,float);
static int getNum()
{
return Num;
}
void get();
//补全构造函数
//添加修改center坐标的函数
//添加返回Num值的函数
};
int Circle::Num = 3;
#endif
//test.cpp
#include "2.h"
#include <iostream>
#include <cmath>
void Circle::get()
{
std::cout<<center.x<<" "<<center.y<<" "<<radius<<std::endl;
}
Circle::Circle(float x,float y,float r) : center(x,y),PI(3.1415926)
{
radius = r;
// std::cout<<"构造"<<std::endl;
}
void Circle::Setcenter(float x,float y)
{
this->center.x = x;
this->center.y = y;
}
//使以下函数可以运行
float Distance(Point2D a,Point2D b)
{
float d = sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
return d;
}
//main.cpp
#include <iostream>
#include <cmath>
#include "2.h"
using namespace std;
int main()
{
/*补全初始化,要求三个
圆分别以原点,(5,3)
和(4,5)为圆心,以3为
半径。然后修改第二个圆
的圆心为(1,1)*/
Circle cir[3] = {Circle(0,0,3),Circle(5,3,3),Circle(4,5,3)};
cir[1].get() ;
cir[1].Setcenter(1,1);
cir[1].get() ;
cout<<cir[1].getNum() <<" "<<cir[2].getNum() <<endl;
Point2D a(0,3);
Point2D b(4,0);
cout << Distance(a,b) << endl;
return 0;
}
```