Я пытаюсь вызвать метод в C ++ из Python, который возвращает std :: list в качестве параметра.
Вот прототип C ++:
void FindAllServices(int id, std::list<Service*> &services)
Вот моя карта типов для std :: list:
%typemap(in) (std::list<Service*> &) (std::list<Service*> temp) {
$1 = &temp;
}
%typemap(argout) (std::list<Service*>&) {
Py_XDECREF($result); /* Blow away any previous result */
$result = PyList_New((*$1).size());
qList<Service*>::iterator it = (*$1).begin();
int i = 0;
while(it != (*$1).end()) {
PyList_SetItem($result,i,SWIG_NewPointerObj((void*)(*it), SWIGTYPE_p_Service, 0));
it++; i++;
}
}
Когда я вызываю функцию из Python, я могу взломать код C ++ и увидеть, что все в порядке (то есть некоторые указатели Service скопированы в списке). Тем не менее, список, который я получаю в Python, пуст.
Ты хоть представляешь, что я могу делать неправильно?
Спасибо!