Я пытаюсь создать оболочку Python для следующего класса C ++.
A(vector<pair<double, double>>* points, double r_cutoff)
void func(vector<pair<double, double>>* offset)
To оболочка Python получает ndarray Numpy в качестве аргумента и создает из него вектор.Затем он пытается передать адрес конструктору C ++ и его функции «func».
cdef extern from "cell.h" namespace "cl":
cdef cppclass A:
A(vector[pair[double, double]]* points, double r_cutoff) except +
void func(vector[pair[double, double]]* offset)
cdef class PyA:
cdef A* thisptr
def __cinit__(self, np.ndarray points, double r_cutoff):
cdef vector[pair[double, double]] vec
vec.resize(points.shape[0])
for i in range(points.shape[0]):
vec[i].first = points[i][0]
vec[i].second = points[i][1]
self.thisptr = new A(&vec, r_cutoff)
def func(self, np.ndarray offset):
cdef vector[pair[double, double]] vec
vec.resize(offset.shape[0])
for i in range(offset.shape[0]):
vec[i].first = offset[i][0]
vec[i].second = offset[i][1]
self.thisptr.func(&vec)
Но он жалуется на наличие неизвестного типа в
def func(self, np.ndarray offset):
cdef vector[pair[double, double]] vec
^
------------------------------------------------------------
file.pyx:27:25: unknown type in template argument
, который я правильно импортировали вектор, и пара, но я не понимаю, почему Cython жалуется на это.Любая помощь будет оценена!