所以,这是我第一次真正将单个程序分成一个头文件和两个 .cpp 文件。但我认为我遇到了链接错误。下面是目录的外观。(这是我的图片的链接我没有足够的代表在问题中发布图片)
main.cpp 是我的主要源文件,所有调用函数和其他重要的东西都在其中。在functions.cpp 我有我所有的功能,在coordin.h 文件我有函数原型和结构和常量。一切都很好,没有错字,我已经检查了一切。但我得到一个未定义的函数错误引用。我也包含了 coordin.h 文件。你认为functions.cpp文件需要去别的地方吗?我的意思是编译器没有在那个文件里面看?
她的代码:
主文件
#include <iostream>
#include "coordin.h"
using namespace std;
int main()
{
rect rplace ;
polar pplace;
rect test = {45.89,25.4};
pplace = rect_to_polar(test);
cout<<pplace.angle<<endl;
return 0;
}
坐标.h
#ifndef COORDIN_H_INCLUDED
#define COORDIN_H_INCLUDED
/* Constants */
const double RAD_TO_DEG = 57.29577951;
struct polar{
double distance; //distance from the origin
double angle; //the angle from the origin
};
struct rect {
double x; //horizontal distance form the origin
double y; //vertical distance from the origin
};
/* Function prototypes */
polar rect_to_polar(rect xypos);
void show_polar(polar dapos);
#endif // COORDIN_H_INCLUDED
函数.cpp
/*
functions.cpp
contains all the function declarations
*/
#include <iostream>
#include "coordin.h"
#include <cmath>
using namespace std;
//convert rectangular to polar coordinates
polar rect_to_polar(rect xypos){
polar answer;
answer.distance =
sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
answer.angle = atan2(xypos.y, xypos.x);
return answer;
}
//show polar coordinate, converting angle to degrees
void show_polar(polar dapos){
cout<<"Distance : " << dapos.distance <<endl;
cout<<"Angle : " << dapos.angle * RAD_TO_DEG <<" degrees."<<endl;
}
继承人的错误: