我希望我的std :: unique_ptr调用QObject :: deleteLater来破坏对象.
我无法弄清楚该怎么做.
我没有尝试编译.
例如
std::unique_ptr<SomeQObject, decltype(&QObject::deleteLater)> var(
pointer, &QObject::deleteLater);
Run Code Online (Sandbox Code Playgroud)
请帮忙...
添加#1.
好的,我发现这有效:
std::unique_ptr<QObject, decltype(std::mem_fun(&QObject::deleteLater))> var(
pointer,
std::mem_fun(&QObject::deleteLater));
Run Code Online (Sandbox Code Playgroud)
而不是这一个:
std::unique_ptr<QObject, decltype(&QObject::deleteLater)> var(
pointer,
QObject::deleteLater);
Run Code Online (Sandbox Code Playgroud)
但是使用它对我来说太难看了.有好办法吗?
pep*_*ppe 11
顺便说一下,它非常简单直接.
struct QObjectDeleteLater {
void operator()(QObject *o) {
o->deleteLater();
}
};
template<typename T>
using qobject_delete_later_unique_ptr = std::unique_ptr<T, QObjectDeleteLater>;
Run Code Online (Sandbox Code Playgroud)
用法:
qobject_delete_later_unique_ptr<QObject> ptr(new QFooBar);
Run Code Online (Sandbox Code Playgroud)
如果你能拿出明智的名字,可以获得奖励积分......
归档时间: |
|
查看次数: |
1141 次 |
最近记录: |