1

cpp lib を にラップしようとしていcythonます。詳細は次のとおりです。

Handle.h:

class Handle {
    public:
    // accessors
    // mutators  
};

class Store {
    public:
        Handle* lookup(char* handleName);
        int update(Handle*);
};

handle.pyx:

cdef extern from "Handle.h" namespace "xxx":
    cdef cppclass Handle:
        ....

cdef extern from "Handle.h" namespace "xxx":
    cdef cppclass Store:
        Handle* lookup(char*)
        int update(Handle*)

cdef class PyHandle:
    cdef Handle* handle
        ....

cdef class PyStore:
    cdef Store* store
    def __cinit__(self):
        store = ....
    def lookup(self, name):
        handle = self.store.lookup(name)
        pHandle = PyHandle()
        pHandle.handle = handle
        return pHandle
    def update(self, h):
        self.store.update(h.handle)

最後のステートメントは、 というエラーを出していますCannot convert Python object to 'Handle *'。私は単純なものが欠けていることを知っています。Handle*Python オブジェクトに埋め込まれている を呼び出しに渡すにはどうすればよいですか?

4

1 に答える 1

0

パラメータをハンドルに明示的に宣言します。

def update(self, Handle h):
        self.store.update(h.handle)
于 2012-11-06T22:24:55.997 に答える