我对Cython还比较新,我试图包装一个模板向量类,定义如下:
template < typename T, uint N >
struct Vector{}
我发现学习Cython如何使用模板很困难,特别是那些带有int作为参数的模板。我在文档中读到,目前还不支持使用int作为模板参数。请问我应该如何正确地处理这个问题?
我对Cython还比较新,我试图包装一个模板向量类,定义如下:
template < typename T, uint N >
struct Vector{}
我发现学习Cython如何使用模板很困难,特别是那些带有int作为参数的模板。我在文档中读到,目前还不支持使用int作为模板参数。请问我应该如何正确地处理这个问题?
如果您感兴趣,Cython wiki 显示了如何在Cython中编写模板类:
cdef extern from "<vector>" namespace "std":
cdef cppclass vector[T]:
...
我找到了一个简单的解决方案!
在C++头文件中,你可以声明一个typedef,例如
typedef Vector<float,3>; Vector3f;
cdef extern from "Vector.h" namespace "ns":
cdef cppclass Vector3f:
现在,我有一个额外的问题,那就是针对“专门”的函数,对于我的情况是针对具有3个参数的向量的特化。
template<typename T1, typename T2>
inline Vector<T1, 3 >Cross(const Vector <T1, 3 > & v1, const Vector<T2, 3> & v2)
cdef extern from "Vector.h" namespace "ns":
cdef cppclass Vector3f:
...
Vector3f Cross(Vector3f v1,Vector3f v2)