我有一个函数,原型如下:
double gradeCalc (double midterm, double final, const vector<double>& hwGrades);
在我的代码中,我传递了变量作业,声明为
vector<double> homework;
进入第三个参数。我收到以下错误:
undefined reference to `gradeCalc(double, double, std::vector<double, std::allocator<double> >)'
在我正在使用的教科书中,函数原型是相同的,但没有提到这个错误。似乎家庭作业的类型不是我想象的那样。我做错了什么? (那个问题的分配器是什么?)
修改 根据要求提供以下全功能定义:
double gradeCalc (double midterm, double final, const vector<double> & hwGrades) {
if (hwGrades.size() == 0) {
throw domain_error("homework grades list empty");
}
double median = vdMedian(hwGrades);
return 0.2 * midterm + 0.4 * final + 0.4 * median;
}
编辑#2 找到。愚蠢的印刷错误。仍然有兴趣知道分配器是什么。很高兴在一个单独的问题上提问。
答案 0 :(得分:0)
vcvarsall.bat
模板定义为
vector
请注意第二个模板参数的deafult值。
所以当你写这个
template<class _Ty, class _Alloc = allocator<_Ty> >
class vector: public _Vector_alloc<_Vec_base_types<_Ty, _Alloc> >
它实际上与
相同std::vector<double> homework;