在调用中使用 std::vector,<double>但收到有关 std::vector<double、std::分配器>正在使用的错误<double>

Using a std::vector<double> in call but getting an error about std::vector<double, std::allocator<double> > being used

本文关键字:double lt gt std vector 分配器 错误 调用      更新时间:2023-10-16

我有一个函数,它创建一个向量,然后使用该向量作为输入调用类构造函数,但它返回一个错误

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++相对较新。

std::vector<double>std::vector<double, std::allocator<double> >的简称,因为std::vector<>的第二个模板参数默认为std::allocator<T>

错误的原因不同。


undefined reference to Class::Class错误意味着存在此构造函数的声明,但没有定义

您可能没有将对象文件或库与Class::Class的定义链接。需要链接它以解析该未定义的引用。