Che*_*ron 5 c++ qt unique-ptr qmap
我试图防止裸指针,防止内存泄漏等。我也想映射int到INuiSensor*。由于我也在使用 Qt,因此我尝试使用它QMap<int, std::unique_ptr<INuiSensor>>来执行此操作,但是 QMap 的源代码使这变得不可能:
template <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey, const T &avalue)
{
detach();
Node *n = d->root();
Node *y = d->end();
Node *last = 0;
bool left = true;
while (n) {
y = n;
if (!qMapLessThanKey(n->key, akey)) {
last = n;
left = true;
n = n->leftNode();
} else {
left = false;
n = n->rightNode();
}
}
if (last && !qMapLessThanKey(akey, last->key)) {
last->value = avalue;
return iterator(last);
}
Node *z = d->createNode(akey, avalue, y, left);
return iterator(z);
}
Run Code Online (Sandbox Code Playgroud)
线路:
last->value = avalue;
Run Code Online (Sandbox Code Playgroud)
是造成问题的原因:您不能直接在 unique_ptr 上使用 = 运算符。所以现在我对接下来要做什么感到困惑。是否可以以其他方式使用 QMap 和 unique_ptr ?出于某种原因,使用 QMap 和 unique_ptr 的整个想法是愚蠢的吗?我可以做些什么来防止在仍然使用 QMap 的同时使用裸指针?
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |