我的应用程序在整个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 ?
}
};