我的应用程序在C++ API中使用qSysDePosits,在这里,它不返回对象,而是返回一个智能指针,每个类都有一个附带的Type,以方便使用。在
class SomeClass
{
SomeClassP getInstance() { return SomeClassP(new SomeClass()); }
}
typedef QSharedPointer<SomeClass> SomeClassP;
这很有效,但我想知道我的设计是否需要修改以处理PythonQt集成。例如,在pythonqtwarker中,我应该从指针返回什么?如果我在python中处理指针,那么如何调用其他接受智能指针而不是普通指针的函数?我需要向PythonQt公开智能指针吗?python中的指针似乎自动处理了很多问题。我的案子需要做些什么?是否应该在C++中添加附加函数,接受非智能指针,将指针简单地包装在智能指针中,并将其发送到智能指针接受函数?pythonapi似乎有一些关于指针所有权的相当复杂的规则。在
^{pr2}$
我们正面临着同样的问题,而且还没有一个好的解决方案。在
早期的方法是添加返回原始指针的函数变量。然后我们去掉了这些,现在在PythonQt中装饰智能指针,这样py代码就可以对它们调用.get()来获取原始指针。这就是我如何第一次尝试性地切换到那种风格:(fromhttps://github.com/realXtend/naali/commit/e72cb827c7fcbaee27b8258e616ee7bd2835fbd7)
我不确定这是否安全,但似乎有效。如果有更好的解决方案我很感兴趣。在
相关问题 更多 >
编程相关推荐