不同文件如何编译连接
编了个求中位数的程序 median.cpp#include<vector>
#include<algorithm>
#include<stdexcept>
#include"median.h"
using namespace std;
typedef vector<double>::size_type vec_sz;
double median(vector<double> vec){
vec_sz size=vec.size(),mid=size/2;
if(size==0)
throw domain_error("vector is empty");
sort(vec.begin(),vec.end());
return size%2==0?(vec[mid]+vec[mid-1])/2:vec[mid];
}
又写了头文件 median.h
#ifndef GUARD_median_h
#define GUARD_median_h
#include<vector>
double median(std::vector<double>);
#endif
但在一个程序test.cpp
#include<iostream>
#include<string>
#include<vector>
#include"median.h"
using namespace std;
typedef vector<double>::size_type vec_sz;
int main(){
vector<double> homework;
double x;
while(cin>>x)
homework.push_back(x);
cout<<median(homework)<<endl;
return 0;
}
中调用时,在cmd中编译时出现以下提示
E:\cpp>g++ -o test test.cpp
C:\Users\charderkk\AppData\Local\Temp/ccsPWT7J.o:test.cpp:(.text+0x222): undefined
reference to `median(std::vector<double, std::allocator<double> >)'
collect2: ld returned 1 exit status
请问是什么原因,还有就是在通常的文件编译连接有什么要注意的地方
[ 本帖最后由 charderkk 于 2011-1-26 18:09 编辑 ]