Comment stocker correctement les définitions de fonctions template dans un fichier .cpp en C++ ?
Bonjour ! J'apprends le C++ et je suis confronté à un problème que je n'arrive pas à résoudre depuis deux jours. J'écris une petite classe conteneur basée sur des templates. J'ai décidé de séparer la déclaration et l'implémentation dans différents fichiers, comme je le fais habituellement avec les classes normales. Voici un exemple :
```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;
}
```
Lors de la compilation, j'obtiens des erreurs de linkage : "undefined reference to `MyArray::MyArray(int)'" et des erreurs similaires pour les autres méthodes. Sur Internet, on dit que cela est lié