【发布时间】:2011-11-29 15:49:41
【问题描述】:
我的应用在整个 C++ API 中使用 QSharedPointers,它通常不会返回一个对象,而是返回一个指向它的智能指针,并且每个类都有一个附带的 typedef 以方便使用。
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 ?
}
};
【问题讨论】:
标签: c++ python qt smart-pointers