私のアプリはオブジェクトを返すのではなく、通常はスマートポインタを返し、すべてのクラスには便宜のために付随するtypedefがあるC++ API全体でQSharedPointersを使います。PythonQtを使ったスマートポインタ
class SomeClass
{
SomeClassP getInstance() { return SomeClassP(new SomeClass()); }
}
typedef QSharedPointer<SomeClass> SomeClassP;
これはうまくいったが、私のデザインはPythonQtの統合を処理するように変更する必要がある場合、私はどのように/思ったんだけど。たとえば、PythonQtWrapperではポインタから何を返すべきですか?私がPythonでポインターを扱っている場合、どのように普通のポインターではなくスマートポインターをとる他の関数を呼び出すことができますか? SmartポインタをPythonQtに公開する必要はありますか? boost :: pythonでは、多くのスマートポインタのものが自動的に処理されたようです。私の場合は何をする必要がありますか?スマートポインタにポインタをラップしてスマートポインタ受け付け関数に送る非スマートポインタを受け入れるC++の関数を追加する必要がありますか? Python APIには、ポインタの所有に関するかなり複雑なルールがいくつかあります。
class PythonQtWrapper_SomeClass : public QObject
{
Q_OBJECT
public slots:
SomeClass* new_SomeClass() { return new SomeClass(); }
void delete_Mesh(SomeClass* obj) { delete obj; }
SomeClass* static_SomeClass_build(int foo) {
SomeClassP ack = SomeFactory::build(foo);
return ?
}
};