具现化

C++模板的声明和实现为何要放在头文件中?

被刻印的时光 ゝ 提交于 2019-12-07 19:08:19
问题的产生 通过下例来说明问题。例如在array.h文件中有模板类array: // array.h template <typename T, int SIZE> class array { T data_[SIZE]; array (const array& other); const array& operator = (const array& other); public: array(){}; T& operator[](int i) {return data_[i];} const T& get_elem (int i) const {return data_[i];} void set_elem(int i, const T& value) {data_[i] = value;} operator T*() {return data_;} }; 然后在main.cpp文件中的主函数中使用上述模板: // main.cpp #i nclude "array.h" int main(void) { array<int, 50> intArray; intArray.set_elem(0, 2); int firstElem = intArray.get_elem(0); int* begin = intArray; } 这时编译和运行都是正常的