كيفية تخزين تعريفات الدوال القالبية بشكل صحيح في ملف .cpp في لغة C++؟
مرحبًا! أنا أدرس لغة C++ وواجهت مشكلة لا أستطيع حلها منذ اليوم الثاني. أكتب فئة حاوية صغيرة باستخدام القوالب (templates). قررت فصل الإعلان (declaration) عن التنفيذ (implementation) في ملفات مختلفة، كما أفعل عادةً مع الفئات العادية. إليك مثال:
```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;
}
```
عند التجميع، أحصل على أخطاء ربط (linking errors): "undefined reference to `MyArray::MyArray(int)'" وأخطاء مشابهة للدوال الأخرى. على الإنترنت، يُكتب أن هذا مرتبط...