gpt4 book ai didi

qt - std::unique_ptr 和 QObject::deleteLater

转载 作者:行者123 更新时间:2023-12-02 04:14:03 24 4
gpt4 key购买 nike

我希望我的 std::unique_ptr 调用 QObject::deleteLater 来破坏该对象。

我不知道该怎么做。

我尝试过的任何方法都无法编译。

例如

std::unique_ptr<SomeQObject, decltype(&QObject::deleteLater)> var(
pointer, &QObject::deleteLater);

请帮忙...

添加#1。

好的,我发现这有效:

std::unique_ptr<QObject, decltype(std::mem_fun(&QObject::deleteLater))> var(
pointer,
std::mem_fun(&QObject::deleteLater));

而不是这个:

std::unique_ptr<QObject, decltype(&QObject::deleteLater)> var(
pointer,
QObject::deleteLater);

但是它太丑了,我无法使用它。有什么好的办法吗?

最佳答案

顺便说一句,这非常非常简单明了。

struct QObjectDeleteLater {
void operator()(QObject *o) {
o->deleteLater();
}
};

template<typename T>
using qobject_delete_later_unique_ptr = std::unique_ptr<T, QObjectDeleteLater>;

用法:

qobject_delete_later_unique_ptr<QObject> ptr(new QFooBar);

如果你能想出一个合理的名字,就可以获得奖励积分......

关于qt - std::unique_ptr 和 QObject::deleteLater,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402152/

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