c++ - QCache 和 std::shared_ptr

标签 c++ qt c++11 smart-pointers

谁能给我提示这个错误:

no viable conversion from 'std::shared_ptr<Foo>' to 'std::__1::shared_ptr<Foo> *'

QCache 看起来像这样:

QCache<int, std::shared_ptr<Foo>> cache;

然后我尝试像这样插入元素:

std::shared_ptr<Foo> foo;
cache.insert(23, foo);

感谢您的帮助。

最佳答案

刚刚研究了 QCache API,由于我的猜测是正确的,我将把它作为答案发布(希望得到支持!)。

insert() 的签名是bool QCache::insert(const Key & key, T * object, int cost = 1)。此外,API 提到 QCache 从那一刻起拥有指针这一事实,因此您根本不需要 shared_ptr。相反,您应该插入将由 QCache 管理的原始指针。

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

相关文章:

c++ - 使用可变参数模板的通用访问者

qt - 如何将信号从一个 qml 发送到另一个 qml

c++ - 如何在QGridLayout中获取QComboBox的当前文本?

c++ - 如何将 QT 与 novint falcon 集成?

c++11 - 什么是函数类型的右值引用?

c++ - 相同的外部结构只有一个功能不同

c++ - 获取连接到图中节点的最大边数

c++ - 为什么 C 和 C++ 编译器在从未强制执行时允许函数签名中的数组长度?

c++ - 改变静态链接 DLL 的 DLL 搜索路径

c++ - c++中唯一标识任意对象