将参数传递给构造函数时,C++类模板未进行编译



我试图实现一些小的通用数据结构作为复习,并学习更多的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

您必须直接在头文件中实现模板类的定义。

最新更新