我决定为我的库编写自己的Vector类,但是当我尝试使用g++ -Wall -std=c++11 -O a.cpp -c -o a.o
编译它并使用nm a.o
从输出文件中读取符号时,我看不到任何成员函数我为该课程写过,当我尝试将它与使用它们的程序链接时,我得到undefined reference to
个错误。
这是a.h文件:
template<typename T> class Vector {
private:
int vsize;
const int maxsize=2147483647;
T* array;
public:
Vector();
~Vector();
bool push_back(T t);
bool pop_back(T* t);
bool replace(int element, T t);
bool resize(int newsize);
bool getP(int element, T* t);
bool clear();
T* getArray();
int size();
T operator[](int n);
};
和a.cpp文件:
#include <stdlib.h>
#include "a.h"
template<typename T> Vector<T>::Vector() {
vsize=0;
array=(T*)malloc(sizeof(T)*vsize);
}
template<typename T> Vector<T>::~Vector() {
free(array);
}
template<typename T> bool Vector<T>::push_back(T t) {
if(resize(vsize+1))
return 1;
array[vsize-1] = t;
return 0;
}
template<typename T> bool Vector<T>::pop_back(T* t) {
*t = array[vsize-1];
return resize(vsize-1);
}
/*
Other member function definitons...
*/
我正在使用g ++ 5.4.0和nm 2.26.1