我有一个QObjectSystemdDBusManager
,它可以返回其他QObject(Unit
类(。这些对象没有任何理由归SystemdDBusManager
所有,但根据Qt文档,这可能意味着返回的对象归SystemdDBusManager所有。
class SystemdDBusManager : public QObject
{
Q_OBJECT
public:
Unit *getUnit(QString const &name);
};
明确Unit
不归SystemdDBusManager
所有的好方法是什么?
编写文档。
没有硬性规定,谁拥有指针,这都是惯例。如果您希望调用者拥有所有权,则必须在函数的文档中明确说明。
在函数名称中传达这一意图可能也是一个好主意,因此我建议将其命名为takeUnit
,而不是getUnit
,这意味着从SystemDBusManager获得所有权。
您可以返回指向Unit
对象的共享指针或唯一指针,具体取决于您将如何使用该对象。
这样,调用者就不必关心指针的生存期了。