What am I doing wrong here. The same code compiles as "def add", but
not as "def __add__"?

cdef extern from "box2d/Common/b2Math.h":
    cdef cppclass b2Vec2:
        float x, y
        b2Vec2()
        b2Vec2(float x, float y)
        b2Vec2 operator+(b2Vec2 v)

cdef class Vec2:
    cdef b2Vec2 *obj
    def __cinit__(self, float x=0.0, float y=0.0):
        self.obj = new b2Vec2(x, y)

    def __dealloc__(self):
        del self.obj

    # This compiles
    def add(self, Vec2 other):
        ret = Vec2()
        ret.obj[0] = self.obj[0] + other.obj[0]
        return ret

    # This does not
    def __add__(self, Vec2 other):
        ret = Vec2()
        ret.obj[0] = self.obj[0] + other.obj[0]  # error here
        return ret

error is "test.pyx:25:33: Cannot convert Python object to 'b2Vec2' "
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to