Cython:将 complex[double] 添加到 double 时出错
Cython: error adding complex[double] to double
根据 libcpp/complex.pxd
添加 T
到 complex[T]
支持:
complex[T] operator+(complex[T]&, T&)
complex[T] operator+(T&, complex[T]&)
但是不行:
a.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])
setup.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
中的 并将其更改为
complex[T] operator+[T](complex[T]&, T&)
看起来更合法但仍然行不通。
我已经开始工作了。查看 cython 票 https://github.com/cython/cython/issues/1643
它是一个组合
移动
complex[T] operator+(complex[T]&, T&)
超出 cppclass 定义,将其更改为
complex[T] operator+[T](complex[T]&, T&)
如问题和@DavidW 对 cimport *
的想法所建议
根据 libcpp/complex.pxd
添加 T
到 complex[T]
支持:
complex[T] operator+(complex[T]&, T&)
complex[T] operator+(T&, complex[T]&)
但是不行:
a.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])
setup.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
中的 并将其更改为
complex[T] operator+[T](complex[T]&, T&)
看起来更合法但仍然行不通。
我已经开始工作了。查看 cython 票 https://github.com/cython/cython/issues/1643
它是一个组合 移动
complex[T] operator+(complex[T]&, T&)
超出 cppclass 定义,将其更改为
complex[T] operator+[T](complex[T]&, T&)
如问题和@DavidW 对 cimport *