1
我有一個C++類myClass
,我試圖讓一個創建者基於numpy數組。將numpy對象傳遞給pythonqt包裝器
這裏是定義new_
蟒蛇創作者以PyObject
作爲參數包裝:
class myClassPyWrapper : public QObject {
Q_OBJECT
public slots:
/*... many other creators here ...*/
myClass* new_myClass(PyObject* my_py_obj){
if (PyArray_Check(my_py_obj)) {
//do something
}
return nullptr;
}
}
但創作者不會被調用,並從內部的Python,當我鍵入:
a=np.array(np.zeros(100)).reshape(10,10)
b=myClass(a)
我得到:
py> a=np.array(np.zeros(100)).reshape(10,10)
py> b=myClass(a)
Traceback (most recent call last):
File "<string>", line 1, in <module>
ValueError: Could not find matching overload for given arguments:
(array([[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]),)
The following slots are available:
myClass() -> myClass
myClass(PyObject my_py_obj) -> myClass
myClass(myClass) -> myClass
myClass(int, int) -> myClass
myClass(int, int, double val) -> myClass
myClass(int, int, double val, QString name) -> myClass
myClass(QVector<double>, QPair<int,int>) -> myClass
我試着將Pyobject*
與PyArrayObject*
但我得到相同的錯誤。
每個其他創作者的作品。
我錯過了什麼?
你可以嘗試傳遞一個簡單的Python對象,就像一個字符串?它會調用你的函數還是聲稱它不匹配?它看起來像系統希望PyObject沒有指針「*」,這是不好的。 –