1
私はC++クラスmyClass
を持っており、numpy配列に基づいて作成者を作ろうとしています。numpyオブジェクトをpythonqtラッパーに渡す
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の中から、私が入力したときに:ここで
は、引数としてPyObject
を取っnew_
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*
が同じエラーが発生します。
他のすべての作成者が動作します。
私には何が欠けていますか?
私はここで私がPythonQtの開発者に対しから直接得た答えは、ケースに誰かが同じ問題GET、POST
文字列のような単純なPythonオブジェクトを渡すことができますか?それはあなたの機能を呼び出すか、それともそれが一致しないと主張しますか?それは、システムがPyObjectを望んでいるように見えますが、 '*'というポインタはうまくいきません。 –