python — ошибка: несовместимые аргументы функции

я использую pybind11 чтобы получить доступ к некоторым функциям, которые я написал в C ++ из Python. Я хочу вернуть инициализированный экземпляр структуры в python (из функции-члена класса), чтобы я мог получить доступ к значениям экземпляра в python. Я предоставил упрощенную версию моего исходного файла. Можно воспроизвести ошибку следующим образом.
Это оболочка C ++

#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include "sum.h"namespace py = pybind11;

PYBIND11_PLUGIN(GetSum) {

py::module mod("GetSum", "wrapping caltri");

mod.def("get_instance", &GetSum::get_instance, py::return_value_policy::copy, "get instance of out");

py::class_<GetSum, std::shared_ptr<GetSum>>(mod, "GetSum")
.def(py::init<>())
.def("input", &GetSum::input);

return mod.ptr();
}

Это часть заголовка класса sum.h

   extern "C" {
#include "mesh.h"}
#include<iostream>
#include<vector>

class GetSum {
struct A out;

public:
GetSum();
void input(std::vector<float>);
struct A get_instance() {
return out; };
~GetSum();

};

Это определение класса sum.cpp

#include "sum.h"
GetSum::GetSum() {
out.pointlist = nullptr;
}
void GetSum::input(std::vector<float> num){
out.pointlist = new float[num.size()];
for(size_t i = 0; i < num.size(); i++)
*(out.pointlist+i) = num[i];
}

GetSum::~GetSum(){
delete [] out.pointlist;
}

Определение структуры: mesh.h

#include <stdio.h>

struct A {
float *pointlist;
};

и вот как я это называл в питоне.

import GetSum
m = GetSum.GetSum()
m.input([1.0,2.0])
GetSum.s = GetSum.get_instance()

После чего я получаю ошибку: get_instance (): несовместимые аргументы функции. Поддерживаются следующие типы аргументов:
1. (arg0: GetSum) -> A

Может ли кто-нибудь помочь мне понять, где я могу пойти не так?

Спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]