我正試圖在現有的C++應用程序中嵌入python。不過,我試圖從python腳本調用實例成員函數。如何使用Python C/C++接口將實例成員函數作爲PyCFunction類型傳遞
我有一個現有的類,其中我有一個私有成員函數,包裝原生函數並滿足PyCFunction接口。
class MY_CLASS {
public:
void MY_CLASS();
void submit(TypeA a, int b);
private:
PyObject* PythonMethod_submit(PyObject*, PyObject*);
}
當我創建PyMethodDef我使用的方法的名稱來標識,但是我想我得到一個compliation錯誤表明我有錯誤類型簽名的功能。
MY_CLASS::MY_CLASS() {
// Python C/API Intilization stuff
PyMethodDef ModuleMethods[] = {
{ "submit",
PythonMethod_submit,
METH_VARARGS,
"docstring" }
};
Py_InitModule("myclass", ModuleMethods);
// Further interaction with the embeded interpreter
}
如果我使用作爲Python的C API這一過程的工作中所描述的靜態函數,當我使用類成員我收到錯誤斷言PyObject* (MY_CLASS::)(PyObject*, PyObject*) does not match PyObject* (*)(PyObject*, PyObject*)
。
如錯誤中所述,是否可以將成員函數作爲函數指針傳遞?