我已经阅读了为什么模板只能在头文件中实现?而我为什么不能我的模板类的定义进行了声明分开,并把它.cpp文件中?
如果我创建模板,那么cpp除了他们的-files 之外,我还要提供对他们的-files 的h访问,或者直接在头文件中写入定义。
因此,如果我想允许在其他应用程序中完全使用我的模板,那么我不能向外界隐藏它们的实现(为了保护知识产权)。我对吗?
一般来说,你是对的......必须公开实现。
如果您的客户只需要为他们可以为您列出的一组有限的特定类型实例化它们,您可以为他们提供一个预编译的对象/库,其中包含这些类型的实例化的实现:请参阅https:// isocpp.org/wiki/faq/templates#separate-template-fn-defn-from-decl
混淆是另一种可能性——让他们看到代码,但让它变得混乱和不可维护。
如果这些选项都不适合,请考虑您是否可以提供一个模板化适配器,该适配器在用户提供的类型上创建运行时多态接口,捕获您的算法所需的特定功能集。接受这些适配器作为代码的前端。这确实有运行时成本。