我有一个创建向量的函数,然后使用该向量作为输入调用类构造函数,但它返回错误
undefined reference to Class::Class(std::vector<double, std::allocator<double> >)
该类具有
的构造函数std::vector<double>
但不是
std::vector<double, std::allocator<double> >
一些示例代码:
std::vector<double> x1;
std::vector<double> x2;
std::vector<double> myvec;
double thisX;
for (int i=0; i<x1.size(); i++ {
thisX = x1[i];
myvec.push_back(thisX);
}
for (int i=0; i<x2.size(); i++ {
thisX = x2[i];
myvec.push_back(thisX);
}
Class MyClass( myvec );
// has a constructor for std::vector<double>
// compiler throws the undefined reference to
// Class::Class(std::vector<double, std::allocator<double> >)
任何见解都表示赞赏!如果不是很明显,我对C ++来说相对较新。
答案 0 :(得分:2)
std::vector<double>
是std::vector<double, std::allocator<double> >
的缩写形式,因为std::vector<>
的第二个模板参数默认为std::allocator<T>
。
错误原因不同。
undefined reference to Class::Class
错误表示此构造函数有声明,但没有定义。
您可能不会将目标文件或库与Class::Class
的定义相关联。它需要链接以解决未定义的引用。