Qt 纠正 unowned QObject return 语义

Qt correct unowned QObject return semantic

我有一个 QObject SystemdDBusManager 可以 return 其他 QObject (Unit class)。这些对象没有任何理由属于 SystemdDBusManager,但根据 the Qt documentation,这可能意味着 returned 对象属于 SystemdDBusManager。

class SystemdDBusManager : public QObject
{
Q_OBJECT

public:
    Unit *getUnit(QString const &name);    
};

有什么好方法可以表明 Unit 不属于 SystemdDBusManager

编写文档。

没有硬性规定,谁拥有指针,都是约定俗成的。如果你想让调用者拥有所有权,你必须在你的函数的文档中明确说明。

在函数名称中传达此意图也是一个好主意,因此我建议将其命名为 takeUnit 而不是 getUnit,这意味着从 SystemDBusManager 获取所有权。

您可以 return 指向 Unit 对象的共享指针或唯一指针,具体取决于您将如何使用该对象。

这样,调用者就不必关心指针的生命周期了。