抱歉标题有点奇怪,如果你能想到一个更好的,请随意想出一个。
这是我的问题。
我有一个看起来像这样的结构:
QObject -> MyBase -> MyDerived
然后我有一个函数将任何派生类型作为 QPointer;
void function(QPointer<MyBase> base) {
...
}
现在的问题是我无法通过 QPointer<MyDerived>
进入这个函数,如果我使用标准指针,我会这样做。我是否必须转换此对象以使其适合该功能?还是我应该只使用普通指针?
还有,有谁知道分配对象失败时的标准行为吗?您应该始终在 try block 中执行此操作还是将其包装在某些东西中以检查它是否为空?我阅读了 Qt 文档,他们说如果分配失败,他们的大多数类都会返回空值。该声明何时为真?如果我不想使用 try-catch,我该怎么办?
最佳答案
你应该使用普通指针。这是 Qt 文档中关于使用 QPoiner 的说法
“ protected 指针会自动转换为 T *,因此您可以自由混合 protected 和不 protected 指针。这意味着如果您有 QPointer
关于c++ - 包含派生对象的 QPointer 不会与基类匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731516/