साइथन दस्तावेज shows ओवरलोडेड विधियों के साथ मौजूदा सी ++ कक्षाओं को घोषित करने का तरीका।सीपीएलक्लास साइथन/सी ++ परिभाषाओं में टूटा हुआ ओवरलोडिंग है?
हालांकि, अगर मैं परिभाषित मेरे अपने 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, लेकिन सी ++ संकलक ("तर्कों की गलत संख्या")
क्या आपने कन्स्ट्रक्टर के अंत में '' 'को छोड़कर कन्स्ट्रक्टर के अंत में जोड़ने का प्रयास किया है ताकि यह देखने के लिए कि कन्स्ट्रक्टर के कारण कोई अपवाद होता है या नहीं? – Crt
शायद किसी एक नाम का नाम बदल सकता है क्योंकि उनके पास एक ही नाम – Crt
है * उनके पास वही नाम है * - यह ओवरलोडिंग – MaxB