Como armazenar corretamente definições de funções template em um arquivo .cpp em C++?
Olá! Estou estudando C++ e me deparei com um problema que não consigo resolver há dois dias. Estou escrevendo uma pequena classe container com templates. Decidi separar a declaração e a implementação em arquivos diferentes, como costumo fazer com classes normais. Aqui está um exemplo:
```cpp
// MyArray.h
template
class MyArray {
private:
T* data;
int size;
public:
MyArray(int s);
~MyArray();
T& operator[](int index);
};
// MyArray.cpp
#include "MyArray.h"
template
MyArray::MyArray(int s) : size(s) {
data = new T[size];
}
template
MyArray::~MyArray() {
delete[] data;
}
template
T& MyArray::operator[](int index) {
return data[index];
}
// main.cpp
#include "MyArray.h"
int main() {
MyArray arr(10);
arr[0] = 42;
return 0;
}
```
Ao compilar, recebo erros de linking: "undefined reference to `MyArray::MyArray(int)'" e similares para outros métodos. Na internet, dizem que isso está relacionado...