我的應用程序在整個C++ API中使用QSharedPointers,而不是返回一個對象,它通常返回一個智能指針,並且每個類都有一個伴隨typedef以方便使用。智能指針與PythonQt
class SomeClass
{
SomeClassP getInstance() { return SomeClassP(new SomeClass()); }
}
typedef QSharedPointer<SomeClass> SomeClassP;
這很好,但我想知道如果我的設計需要改變以處理PythonQt集成。例如,在PythonQtWrapper中,我應該從指針返回什麼?如果我正在處理python中的指針,我怎樣才能調用其他帶有智能指針而不是普通指針的函數?我需要將智能指針暴露給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 ?
}
};