Cythonのドキュメントshowsオーバーロードされたメソッドで既存のC++クラスを宣言する方法。私が定義した場合cppclass Cython/C++定義のオーバーロードが壊れていますか?
しかし、オーバーロードされた方法で自分のcppclass
は...
cdef cppclass point:
float x, y
point():
this.x = 0
this.y = 0
float sum():
return this.x + this.y
float sum(int z): # COMPILE ERROR
return this.x + this.y + z
...私は
機能署名が前の宣言に一致していません取得
コンストラクタをオーバーロードすると、同じエラーが発生します。
cdef cppclass point:
float x, y
point():
this.x = 0
this.y = 0
point(float X, float Y): # COMPILE ERROR
this.x = X
this.y = Y
float sum():
return this.x + this.y
これを間違って実行していますか、この機能はありませんか?
更新:デフォルト引数があまりにも使用できないように見える:
cdef cppclass point:
float x, y
point(float X=0, float Y=0):
this.x = X
this.y = Y
float sum():
return this.x + this.y
cdef float use_point():
cdef point p
p = point(1, 2)
return p.sum()
... Cythonはパスしたが、C++コンパイラ( "引数の数が正しくありません")によってアップつまずいます
コンストラクタの末尾に '' 'except" + "'を追加して、コンストラクタのために例外が発生していないかどうかを確認しましたか? – Crt
多分関数の名前を同じ名前に変更する – Crt
*同じ名前を持っている* - それはオーバーロードしています – MaxB