根据libcpp/complex.pxd添加T支持complex[T]:
libcpp/complex.pxd
T
complex[T]
complex[T] operator+(complex[T]&, T&) complex[T] operator+(T&, complex[T]&)
但它不起作用:
一个.pyx:
# distutils: language = c++ cimport libcpp.complex def f(): libcpp.complex.complex[double](1,2) + libcpp.complex.complex[double](2,3) # ok libcpp.complex.complex[double](1,2) + 5. # Cannot assign type 'double' to 'complex[double]' 5. + libcpp.complex.complex[double](1,2) # Invalid operand types for '+' (double; complex[double])
设置.pyx:
from distutils.core import setup from Cython.Build import cythonize setup( name = "demo", ext_modules = cythonize('a.pyx'), )
知道如何修复它吗?
搬家申报
complex[T] operator+(complex[T]&, T&)
并将cppclass其更改为
cppclass
complex[T] operator+[T](complex[T]&, T&)
看起来更合法但仍然不起作用。
它是移动的结合
complex[T] operator+(complex[T]&, T&) 超出 cppclass 定义,将其更改为
complex[T] operator+T 正如问题中所建议的以及@DavidW 的想法cimport *