C包装器C ++:如何处理C ++模板?

时间:2011-10-08 03:02:12

标签: c++ c templates wrapper

之前有人问过要为c ++类(C Wrapper for C++)编写一个c包装器,这基本上是清楚的。

还有一个问题:如何处理c ++模板? 让我们说这是我的班级:

 template<typename T> class Temp
 {
      T get(); 
      void set(T t); 
 }

是否有一种优雅的方式来编写c包装器?

2 个答案:

答案 0 :(得分:4)

您必须为每个专业化编写一个单独的包装器。

答案 1 :(得分:0)

虽然可以使用C包装模板的特定实例,但是如果存在大量模板实例,则这是艰巨的并且变得不可行。更具可扩展性的解决方案是编写一个工具,以基于文本的方式扩展C ++模板,就像预处理器一样。然后,将它放在编译脚本/ prefs的预构建步骤中。然后,你最终得到了可以用C包装的自动扩展代码(如果工具很花哨的话,已经神奇地包裹在C中)。将模板扩展为文本在运行时甚至不应该是低效的,因为它与C ++的工作方式相同。但是我希望它的编译速度比C ++编译器慢一点。