错误:未定义引用`vector <int> :: pushBack(int const&amp;)'</int>

时间:2013-05-18 12:14:41

标签: c++ templates undefined-reference

我在qt中创建了一个矢量类 我写了这段代码

这是一个点击操作,我试图通过点击操作在向量中添加新值

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

当我删除此代码时没有错误

这里也是我的“vector.h”

 #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> & );
    };
我应该怎么做 谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

编写模板时,应该使用声明定义方法,即在头文件中,而不是cpp文件。另外,我建议使用标准容器类,例如QVectorstd::vector