问题
有没有办法创建一个Python包装器,用于带模板的Cython包装C++类?(即像这里显示的一样,但使用模板:http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#create-cython-wrapper-class)。
我知道有关融合类型的解决方法(https://groups.google.com/forum/#!topic/cython-users/qQpMo3hGQqI),但这不允许您实例化像vector<vector<int>>
这样的类:融合类型毫无疑问没有递归的概念。
改写
我想要实现的是像下面这样的封装类:
cdef extern from "header.h":
cdef cppclass Foo[T]:
Foo(T param)
# ...
创建一个简单的Python包装器:
cdef class PyFoo[T]: # I know the '[T]' can't be here, it's a wish
cdef Foo[T] *thisptr
def __cinit__(self, param):
self.thisptr = new Foo[T](param)
# ...
我非常确定Cython本身不支持这个功能,但也许有人能想出一些解决办法。我并不是在寻找成语化或漂亮的示例,我只是想知道是否有任何可能性。
T
的不同源文件怎么样? - DavidWFoo<T>
实例使用一个公共基类。根据您的要求,这可能是可能或不可能的,但如果可以的话,您只需包装基类和几个构造函数即可。 - DavidW