Мое приложение использует QSharedPointers в API C ++, где вместо возврата объекта он обычно возвращает умный указатель на него, и каждый класс для удобства имеет сопровождающий 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 ?
}
};