gpt4 book ai didi

c++ - 包含派生对象的 QPointer 不会与基类匹配

转载 作者:行者123 更新时间:2023-11-30 01:26:45 26 4
gpt4 key购买 nike

抱歉标题有点奇怪,如果你能想到一个更好的,请随意想出一个。

这是我的问题。

我有一个看起来像这样的结构:

QObject -> MyBase -> MyDerived

然后我有一个函数将任何派生类型作为 QPointer;

void function(QPointer<MyBase> base) {
...
}

现在的问题是我无法通过 QPointer<MyDerived>进入这个函数,如果我使用标准指针,我会这样做。我是否必须转换此对象以使其适合该功能?还是我应该只使用普通指针?

还有,有谁知道分配对象失败时的标准行为吗?您应该始终在 try block 中执行此操作还是将其包装在某些东西中以检查它是否为空?我阅读了 Qt 文档,他们说如果分配失败,他们的大多数类都会返回空值。该声明何时为真?如果我不想使用 try-catch,我该怎么办?

最佳答案

你应该使用普通指针。这是 Qt 文档中关于使用 QPoiner 的说法

“ protected 指针会自动转换为 T *,因此您可以自由混合 protected 和不 protected 指针。这意味着如果您有 QPointer ,则可以将其传递给需要 QWidget * 的函数。 因此,声明将 QPointer 作为参数的函数意义不大; * 只需使用普通指针*。在存储指针时使用 QPointer随着时间的推移。”

关于c++ - 包含派生对象的 QPointer 不会与基类匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com