Я пишу библиотеку, в которой хочу скрыть зависимость Pybind11
. Поэтому я хочу изменить все py::object
s на void*
в заголовке, доступном для клиентов, а затем в разделе реализации я конвертирую void*
обратно в py::object
, это должно быть.
Однако я заметил, что делает что-то вроде:
//tmp.h
private:
// previously py::object module
void* module;
//tmp.cpp
void tmp::some_func()
{
this->module = reinterpret_cast<void*>(py::module::import("MyModule"));
// and seemingly we cant something like this either
py::object some_func = reinterpret_cast<py::object>(this->module).attr("some_func");
...
}
не правильно и терпит неудачу со следующими ошибками соответственно:
Severity Code Description Project File Line Suppression State
Error C2440 'reinterpret_cast': cannot convert from 'pybind11::module' to 'void *' CoreLib l:\wrapper\wrapper\core.cpp 40
Severity Code Description Project File Line Suppression State
Error C2440 'reinterpret_cast': cannot convert from 'void *' to 'pybind11::object' CoreLib l:\wrapper\wrapper\core.cpp 41
Как я должен go об этом преобразование?