filter
클래스를 C++로 구현했으며 파이썬에서 사용하기 위해이 코드를 Cython으로 배치하려고합니다. Cython MyFilter
클래스는 현재 다음과 같습니다.Cython 생성자의 인수로 C++ 객체 초기화
cdef class MyFilter:
cdef filter f;
def __cinit__(self, list array_sizes):
cdef vector[size_t] as = array_sizes
self.f.init(as)
def add(self, uint32_t value):
self.f.add(value)
def get(self, uint32_t value):
return self.f.get(value)
원래, C++ 클래스는 인수로 std::vector<size_t>
했다 하나의 생성자를했다. 그러나 Cython 래퍼가 작동하도록하려면 기본 인수없는 생성자를 정의한 다음 __cinit__
생성자에서 인수를 사용할 수있게 된 후에 init()
함수를 추가하여 개체를 초기화해야했습니다. 이로 인해 C++ 코드에 원치 않는 복잡성이 추가되었습니다.
이렇게하는 것이 더 깔끔하고 좋은 방법이 있습니까? 필요하다면 포인터를 피하고 싶지만 강력한 주장으로 확신 할 수 있습니다.
이동 지정 연산자는 약간 깔끔한 것일 수 있습니까? 필요한 코드의 전체 양은 꽤 비슷하지만 더 깔끔한 C++ 인터페이스입니다. – DavidW