chi*_*uba 1 c++ qt pointers qpointer
对于这个奇怪的标题感到抱歉,如果你能想到一个,请随时提出更好的标题.
这是我的问题.
我有一个看起来像这样的结构:
QObject - > MyBase - > MyDerived
然后我有一个函数将任何派生类型作为QPointer;
void function(QPointer<MyBase> base) {
...
}
Run Code Online (Sandbox Code Playgroud)
问题是现在我无法QPointer<MyDerived>进入这个函数,如果我使用标准指针,我会这样做.我是否必须转换此对象以使其适合该功能?或者我应该只使用普通指针?
此外,当您分配失败的对象时,是否有人知道标准行为?你是否应该总是在try-block中执行此操作或将其包装在某个内容中以检查它是否为null?我阅读了Qt文档,他们说如果分配失败,他们的大多数类都会返回一个空值.该语句何时为true,如果我不想使用try-catch,我该怎么办?
你应该使用普通指针.这就是Qt Document关于使用QPoiner的说法
"一个受保护的指针将自动转换为T*,因此你可以自由地混合有保护和无保护的指针.这意味着如果你有一个QPointer <QWidget>,你可以将它传递给一个需要QWidget*的函数.因此,声明函数将QPointer作为参数没有多大价值;*只需使用普通指针*.随着时间的推移存储指针时使用QPointer.