Avatar ·

如何在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)'",其他方法也有类似问题。网上说这与模板的实例化有关。