C++ 错误:未定义对“vector:pushBack(int const&)”的引用

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

我在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::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.除非调用此方法,否则不会创建方法的专门化。阅读更多关于模板的信息。