在Cython中包装c++模板函数/方法
Wrapping C++ template function/method in Cython
我正在尝试用Cython包装一些c++代码。我有一个使用模板方法的类,但它本身不是模板。
class SomeClass {
template <class T> SomeClass(T& spam);
};
由于类不是模板,而只是构造函数,所以我不能像这样在Cython中将类声明为模板。
# wrong!
cdef extern from "SomeClass.h":
cppclass SomeClass [T]:
SomeClass(T& spam)
如何包装模板方法?
对于非构造函数模板方法,使用以下非模板类:
class SomeClass {
template <class T> void other(T& spam);
};
我能让这个工作:
cdef extern from "someclass.h":
cppclass SomeClass:
void other[T](T &spam)
如果您特别需要构造函数模板方法,那么这可能没有帮助,但是从最初提出这个问题以来,Cython对模板方法的支持至少有了一些改进。
简单。(或者我认为它是)在c++类中,成员是模板化的,而在Cython中,您声明要模板化的类。将代码更改为:
template <class T>
class SomeClass {
SomeClass(T& spam);
};
如果可行,或到:
cdef extern from "SomeClass.h":
cppclass SomeClass:
SomeClass [T](T& spam)
如果Cython支持
我不是一个cython专家,所以我可能是错的。
如何为cython的Boost包装?
http://www.boost.org/doc/libs/1_54_0/libs/python/doc/index.html欢迎来到Boost的第2版。Python,一个c++库,可以实现c++和Python编程语言之间的无缝互操作性。新版本已经从头开始重写,具有更方便和灵活的界面,以及许多新功能,包括支持:引用和指针全局注册类型强制值自动跨模块类型转换高效函数重载c++到Python的异常转换默认参数关键字参数在c++中操作Python对象将c++迭代器导出为Python迭代器文档字符串
我猜你正在寻找这样的东西,它已经作为boost c++库的一部分存在了
相关文章:
- 如何在 c++ 的类中递归调用函数方法?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?
- 如果子类中没有构造函数方法,则错误"no matching function for call to 'LGame::LGame(String&)'"
- 指向类中函数方法的指针不起作用
- 如何发送通过绑定到函数/方法创建的函数对象?
- 编译错误,未创建函数/方法! 对于 brms 模型
- 对静态重载(类)函数/方法的调用是不明确的
- 复制构造函数方法的用法
- C/C++ 函数/方法与 Java 的公开
- std ::函数方法参考无法将dword投入到dword64
- 链表的析构函数方法
- 为什么在类构造函数方法中,std::string 参数在调试时显示不同的结果?
- 我的构造函数方法不接受参数(DirectX / Windows)
- 当函数/方法应该要求 * 或 &
- 带有常量构造函数参数的C++变量构造函数方法
- 使用模板递归检查函数方法是否存在
- 如何通过析构函数方法删除对象(类)
- 为什么在 Java 和 C++ 中不允许隐藏虚拟函数/方法?
- 在构造函数方法中返回一个子类