c++ - 在 C++ 中分离模板接口(interface)和实现

标签 c++ templates c++11 export

这是一个跟进问题: Using export keyword with templates

如原始问题的答案中所述,“导出”在 C++0x 中已弃用,即使对于 C++03,编译器也很少支持。鉴于这种情况,如何才能将实际实现隐藏在 lib 文件中,只通过头文件公开声明,以便最终用户可以知道公开的 API 的签名是什么,但无法访问实现相同 API 的源代码?

最佳答案

实际上你不能。

只有当你有一套特定的特化时,你才能把它们放在图书馆里。基本模板不能放在那里。

另一方面,使用导出并没有隐藏源。编译器仍然需要它从模板中实例化新类。

关于c++ - 在 C++ 中分离模板接口(interface)和实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417465/

相关文章:

c++ - 当您将堆分配的 char push_back 放入 c++ 中的 vector 时

c++ - 如何有效地将具有可变长度成员的对象保存到二进制文件中?

templates - 存在Razor模板时使用XSL的原因

c++ - 在任意加长的集合中查找最大数量是行不通的

c++ - 释放从 char* 创建的 _bstr_t

c++ - 作为宏参数给出的先前定义的常量被视为字符串文字

c++ - 防止从 unique_ptr 到 shared_ptr 的赋值

vector 中的 C++ 模板类对象

c++ - 重载 `std::ostream`运算符时,是否可以更改默认非类型模板参数?

c++ - C++ 中的对象构建