C++ 错误:未定义对“vector:pushBack(int const&)”的引用
我在qt中创建了一个向量类和 我写了这段代码 这是一个点击动作,我正试图用点击动作在vector中添加新的值C++ 错误:未定义对“vector:pushBack(int const&)”的引用,c++,templates,undefined-reference,C++,Templates,Undefined Reference,我在qt中创建了一个向量类和 我写了这段代码 这是一个点击动作,我正试图用点击动作在vector中添加新的值 void MainWindow::manuelclick() { int b=0; vector<int> a; a.pushBack(10); for(int i=0;i<a.size();i++) { b=a.getarray(i); QString str=QString::n
void MainWindow::manuelclick()
{
int b=0;
vector<int> a;
a.pushBack(10);
for(int i=0;i<a.size();i++)
{
b=a.getarray(i);
QString str=QString::number(b);
ui->mbox->setText(str);
}
这些是我犯的错误
undefined referance to vector<int>::pushBack(int const&)
undefined referance to vector<int>::size()
undefined referance to vector<int>::vector()
undefined referance to vector<int>::getarray(int)
undefined referance to vector<int>::~vector()
undefined referance to vector<int>::~vector()
collect2: error: ld returned 1 exit status
当我删除此代码时,没有错误
这里也是我的向量
#include<iostream>
template <class T>
class vector
{
int vsize,maxsize;
T* array;
void alloc_new();
public:
vector();
vector(int);
~vector();
void pushBack(const T&);
void show();
int size();
T operator[](int);
T getarray(int);
vector<T>& operator +=(const vector <T>&);
template<class TE>
friend std::ostream& operator<<(std::ostream&,const vector<TE> &);
template<class TE>
friend std::istream& operator>>(std::istream&,vector<TE> & );
};
我该怎么办
感谢您的帮助在编写模板时,您应该使用声明正确定义方法,即在标题中,而不是在cpp文件中。另外,我建议使用标准容器类,如QVector或std::vector。那么vector的实现在哪里?您确定将vector类的名称与标准库中的名称完全相同是明智的吗?您所说的“分开”是什么意思?你有一个“vector.cpp”吗?你定义了所有vector的方法吗?我有一个vector.h和vector.cpp。当我删除click event中的代码时,没有错误,正如我所说,我认为我在click event下做了一些错误。我有一个vector.h和vector.cpp,这是你的错误。将代码从cpp移动到h文件。当我删除在点击事件中的代码时,没有错误,模板是如何工作在C++中的。1.您必须在标题中声明它们。2.除非调用此方法,否则不会创建方法的专门化。阅读更多关于模板的信息。