使用模板的库的单独编译模型

时间:2017-06-30 15:28:30

标签: c++ templates

我刚刚发现模板不能符合单独的编译模型(因为它们不能分成.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 }

可以命名多种类型。

但这些解决方案有以下缺点:

  • 首先,任何使用您图书馆的人都可以查看源代码。
  • 第二个是您无法预测用户定义的类型

我想弄清楚图书馆创建者如何处理这些问题?他们如何创建通用数据类型并隐藏其实现?

0 个答案:

没有答案