我试图实现一些小的通用数据结构作为复习,并学习更多的c++,但在编译我的基本模板类时遇到了问题。
头文件:
template <class T>
class ArrayList {
public:
ArrayList(T dataToAdd[]);
};
C++文件:
#include <iostream>
#include "arrayList.hpp"
template <class T>
ArrayList<T>::ArrayList(T dataToAdd[]) {
std::cout << "ArrayList constructor" << std::endl;
}
main.cpp:
#include <iostream>
#include "arrayList.hpp"
int main(int argc, const char* argv[]) {
int data[3] = {1, 2, 3};
ArrayList<int> testList(data);
return 0;
}
我认为这个问题与将数组传递到main.cpp中的构造函数有关,因为当我删除所有参数(从头、实现和实际调用构造函数(时,程序编译得很好。
我收到的错误:
/usr/bin/ld: /tmp/cc5ra82s.o: in function `main':
main.cpp:(.text+0x46): undefined reference to `ArrayList<int>::ArrayList(int*)'
collect2: error: ld returned 1 exit status
您必须直接在头文件中实现模板类的定义。