如何在C++中正确地将模板函数定义存储在.cpp文件中?
你好!我正在学习C++,遇到了一个已经困扰我两天的问题。我正在编写一个基于模板的小型容器类。我决定像处理普通类一样,将声明和实现分开放在不同的文件中。以下是一个示例:
```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;
}
```
编译时出现链接错误:"undefined reference to `MyArray::MyArray(int)'",其他方法也有类似问题。网上说这与模板的实例化有关。