在调用中使用std :: vector <double>但是得到关于std :: vector <double,std :: allocator <double =“”>&gt;的错误正在使用

时间:2017-07-21 12:36:37

标签: c++ class c++11 vector

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

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

1 个答案:

答案 0 :(得分:2)

std::vector<double>std::vector<double, std::allocator<double> >的缩写形式,因为std::vector<>的第二个模板参数默认为std::allocator<T>

错误原因不同。

undefined reference to Class::Class错误表示此构造函数有声明,但没有定义

您可能不会将目标文件或库与Class::Class定义相关联。它需要链接以解决未定义的引用。