c++的C包装器:如何处理c++模板
C Wrapper for C++: How to deal with C++ templates?
之前的问题是关于为c++类编写一个c包装器(c wrapper for c++),这基本上是清楚的。
还有一个问题:我如何处理c++模板?假设这是我的类:
template<typename T> class Temp
{
T get();
void set(T t);
}
是否有一种优雅的方式来编写c包装器?
您必须为每个专门化编写单独的包装器。
虽然可以用C语言包装模板的特定实例化,但如果有大量的模板实例化,这是非常困难的,并且是不可行的。更具可扩展性的解决方案是编写一个工具,以基于文本的方式扩展c++模板,就像预处理器一样。然后,将其放入编译脚本/prefs的预构建步骤中。然后,您最终会得到可以用C语言包装的自动扩展代码(或者如果工具足够花哨,已经神奇地包装成C语言)。在运行时将模板扩展为文本甚至不应该是低效的,因为它在某种程度上与c++所做的事情相同。但是我希望它的编译速度比c++编译器慢一点。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 用于矢量处理的多个线程
- 对字符串进行排序时,在c++中处理sort()
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 处理除以零会导致<csignal>意外行为
- 是否可以在c++中处理字符串流中的各个元素
- 在多个核心中处理一个HTTP请求