在Cython中包装C++模板函数/方法

Nik*_*s R 7 c++ methods templates cython word-wrap

我正在尝试用Cython包装一些C++代码.我有一个使用模板方法的类,但不是模板本身.

class SomeClass {
    template <class T> SomeClass(T& spam);
};
Run Code Online (Sandbox Code Playgroud)

由于类不是模板而只是构造函数,因此我不能像在此一样将类声明为Cython中的模板.

# wrong!
cdef extern from "SomeClass.h":
    cppclass SomeClass [T]:
        SomeClass(T& spam)
Run Code Online (Sandbox Code Playgroud)

如何包装模板方法?

Lau*_*ZZA 0

简单的。(或者我认为是)在 C++ 类中,成员是模板化的,而在 Cython 中,您声明该类是模板化的。将您的代码更改为:

template <class T>
class SomeClass {
    SomeClass(T& spam);
};
Run Code Online (Sandbox Code Playgroud)

如果可行的话,或者:

cdef extern from "SomeClass.h":
    cppclass SomeClass:
        SomeClass [T](T& spam)
Run Code Online (Sandbox Code Playgroud)

如果 Cython 支持的话。

我不是 cython 专家,所以我可能是错的。

  • 根据[this](http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#what-s-new-in-cython-v0-13-about-c),模板方法似乎不受支持,仅模板调用 (3认同)