gpt4 book ai didi

c++ - QMap 和 std::unique_ptr

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:37 26 4
gpt4 key购买 nike

我试图防止裸指针,防止内存泄漏等。我还想将 int 映射到 INuiSensor* .由于我也在使用 Qt,所以我尝试使用 QMap > 来执行此操作,但 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);
}

行:

last->value = avalue;

是造成问题的原因:您不能直接在 unique_ptr 上使用 = 运算符。所以现在我很困惑下一步该做什么。是否可以以其他方式使用 QMap 和 unique_ptr ?出于某种原因,使用 QMap 和 unique_ptr 的整个想法是否愚蠢?在使用 QMap 的同时如何防止使用裸指针?

最佳答案

使用 Qt 容器,你应该使用 Qt 智能指针实现。有关此线程中不同实现的更多信息。

What C++ Smart Pointer Implementations are available?

如前所述,您可以使用 QSharedPointer。

关于c++ - QMap 和 std::unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263117/

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