Cython c++模板问题

  • 本文关键字:问题 c++ Cython cython
  • 更新时间 :
  • 英文 :


这是我的c++代码

/**
* A CSI data format converter
* @tparam OutputValueType
* @tparam InputValueType
* @param inputArray
* @return
*/
template<typename OutputValueType, typename InputValueType>
static std::vector<std::complex<OutputValueType>> convertCSIArrayType(const std::vector<std::complex<InputValueType>> &inputArray) {
std::vector<std::complex<OutputValueType>> outputArray(inputArray.size());
for (auto i = 0; i < inputArray.size(); i++) {
outputArray[i] = std::complex<OutputValueType>(inputArray[i].real(), inputArray[i].imag());
}
return outputArray;
}

我想在我的cython代码中包装这个函数,像这样。

cdef cppclass CSISegment:
std::vector<std::complex<OutputValueType>> convertCSIArrayType(const std::vector<std::complex<InputValueType>> &inputArray)

,但这是绝对错误的,所以我怎么能包装这个c++代码与模板规则?

根据您共享的代码,我假设该函数是名为CSISegment的类内部的公共方法,它不是模板。如果正确的话,下面的代码将声明包装器:

# distutils: language = c++
from libcpp.vector cimport vector
from libcpp.complex cimport complex as cpp_complex
cdef extern from "yourcode.cpp":
cdef cppclass CSISegment:
@staticmethod
vector[cpp_complex[OutputValueType]] convertCSIArrayType[OutputValueType, InputValueType](vector[cpp_complex[InputValueType]] &inputArray)

来源:在cython

中使用std::complex的解决方法模板,c++标准库中的cython

python中静态成员

相关内容

  • 没有找到相关文章

最新更新