【发布时间】:2017-03-27 05:24:31
【问题描述】:
根据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&)
看起来更合法,但仍然不起作用。
【问题讨论】:
-
我同意它坏了。我认为没有可行的解决方法。也许向github.com/cython/cython/issues提交错误报告?
-
@DavidW 完成,问题#1643
-
@AntonyHatchkins 当我建议他们提交错误报告时,这是第一次有人这样做:)!
-
@DavidW haha :) 也许有一天世界会变得更宜居 :)
-
AntonyHatchkins @DavidW 我已经提交了related question,它提供了某种解决方法,但也引发了新问题。
标签: python operator-overloading cython complex-numbers