我刚刚发现模板不能符合单独的编译模型(因为它们不能分成.h和.cpp文件)。 我可以在互联网上找到的两个解决方案如下:
在.h文件中添加实现或(原谅我说这个!),包括.cpp文件。
包含具有不同数据类型的同一函数的多个实现版本。例如,在标题文件中:template<class T>
void function(T val);
并在实施文件中:
void function<int>(int val){ //do stuff for int input }
void function<char>(char val){ //do stuff for char input }
可以命名多种类型。
但这些解决方案有以下缺点:
我想弄清楚图书馆创建者如何处理这些问题?他们如何创建通用数据类型并隐藏其实现?