Cómo almacenar correctamente las definiciones de funciones template en un archivo .cpp en C++
¡Hola! Estoy aprendiendo C++ y me encontré con un problema que no puedo resolver desde hace dos días. Estoy escribiendo una pequeña clase contenedor con templates. Decidí separar la declaración y la implementación en diferentes archivos, como suelo hacer con clases normales. Aquí hay un ejemplo:
```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;
}
```
Al compilar, obtengo errores de enlace: "undefined reference to `MyArray::MyArray(int)'" y similares para otros métodos. En internet dicen que esto está relacionado...