之前有人问过要为c ++类(C Wrapper for C++)编写一个c包装器,这基本上是清楚的。
还有一个问题:如何处理c ++模板? 让我们说这是我的班级:
template<typename T> class Temp
{
T get();
void set(T t);
}
是否有一种优雅的方式来编写c包装器?
答案 0 :(得分:4)
您必须为每个专业化编写一个单独的包装器。
答案 1 :(得分:0)
虽然可以使用C包装模板的特定实例,但是如果存在大量模板实例,则这是艰巨的并且变得不可行。更具可扩展性的解决方案是编写一个工具,以基于文本的方式扩展C ++模板,就像预处理器一样。然后,将它放在编译脚本/ prefs的预构建步骤中。然后,你最终得到了可以用C包装的自动扩展代码(如果工具很花哨的话,已经神奇地包裹在C中)。将模板扩展为文本在运行时甚至不应该是低效的,因为它与C ++的工作方式相同。但是我希望它的编译速度比C ++编译器慢一点。