Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QCache和std::共享_C++_Qt_C++11_Smart Pointers - Fatal编程技术网

C++ QCache和std::共享

C++ QCache和std::共享,c++,qt,c++11,smart-pointers,C++,Qt,C++11,Smart Pointers,有人能给我一个关于这个错误的提示吗 no viable conversion from 'std::shared_ptr<Foo>' to 'std::__1::shared_ptr<Foo> *' 从“std::shared_ptr”到“std::__1::shared_ptr*”没有可行的转换 QCache如下所示: QCache<int, std::shared_ptr<Foo>> cache; std::shared_ptr<F

有人能给我一个关于这个错误的提示吗

no viable conversion from 'std::shared_ptr<Foo>' to 'std::__1::shared_ptr<Foo> *'
从“std::shared_ptr”到“std::__1::shared_ptr*”没有可行的转换
QCache如下所示:

QCache<int, std::shared_ptr<Foo>> cache;
std::shared_ptr<Foo> foo;
cache.insert(23, foo);
QCache缓存;
我试着像这样插入元素:

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

谢谢你的帮助。

刚刚查看了QCacheAPI,既然我的猜测是正确的,我将把它作为一个答案发布(希望有更多的投票!)


insert()
的签名是
boolqcache::insert(const-Key和Key,T*object,int-cost=1)
。此外,API提到,从那时起QCache就拥有指针,所以您根本不需要共享的ptr。相反,您应该插入将由QCache管理的原始指针。

刚刚查看了QCache API,由于我的猜测是正确的,我将把它作为一个答案发布(希望有更多的投票!)


insert()
的签名是
boolqcache::insert(const-Key和Key,T*object,int-cost=1)
。此外,API提到,从那时起QCache就拥有指针,所以您根本不需要共享的ptr。相反,您应该插入将由QCache管理的原始指针。

刚刚查看了QCache API,由于我的猜测是正确的,我将把它作为一个答案发布(希望有更多的投票!)


insert()
的签名是
boolqcache::insert(const-Key和Key,T*object,int-cost=1)
。此外,API提到,从那时起QCache就拥有指针,所以您根本不需要共享的ptr。相反,您应该插入将由QCache管理的原始指针。

刚刚查看了QCache API,由于我的猜测是正确的,我将把它作为一个答案发布(希望有更多的投票!)



insert()
的签名是
boolqcache::insert(const-Key和Key,T*object,int-cost=1)
。此外,API提到,从那时起QCache就拥有指针,所以您根本不需要共享的ptr。相反,您应该插入将由QCache管理的原始指针。

从错误中可以看出,
QCache
需要指向其存储类型的指针,而不是类型本身。谢谢。它现在编译为引用:cache.insert(23,&foo)。。。但是我不确定智能指针是否会计算这个引用。这是个坏主意。将导致崩溃。检查我的更新。从错误来看,
QCache
需要指向其存储类型的指针,而不是类型本身。谢谢。它现在编译为引用:cache.insert(23,&foo)。。。但是我不确定智能指针是否会计算这个引用。这是个坏主意。将导致崩溃。检查我的更新。从错误来看,
QCache
需要指向其存储类型的指针,而不是类型本身。谢谢。它现在编译为引用:cache.insert(23,&foo)。。。但是我不确定智能指针是否会计算这个引用。这是个坏主意。将导致崩溃。检查我的更新。从错误来看,
QCache
需要指向其存储类型的指针,而不是类型本身。谢谢。它现在编译为引用:cache.insert(23,&foo)。。。但是我不确定智能指针是否会计算这个引用。这是个坏主意。将导致崩溃。检查我的更新。谢谢你的回答和帮助。问题是,我有一个共享的ptr向量,我想把它们的一部分放到我的QCache中。如果我将指针设置为缓存,但销毁了其中的向量和共享指针,会发生什么?内存会被释放,而我的缓存不会指向任何地方吗?@adapto,如果你尝试这样做,你的程序将被破坏。你不能让两个经理拥有同一个指针——QCache和shared_ptr。这导致了混乱:谢谢你的回答和帮助。问题是,我有一个shared_ptr向量,我想把它们的一部分放到我的QCache中。如果我将指针设置为缓存,但销毁了其中的向量和共享指针,会发生什么?内存会被释放,而我的缓存不会指向任何地方吗?@adapto,如果你尝试这样做,你的程序将被破坏。你不能让两个经理拥有同一个指针——QCache和shared_ptr。这导致了混乱:谢谢你的回答和帮助。问题是,我有一个shared_ptr向量,我想把它们的一部分放到我的QCache中。如果我将指针设置为缓存,但销毁了其中的向量和共享指针,会发生什么?内存会被释放,而我的缓存不会指向任何地方吗?@adapto,如果你尝试这样做,你的程序将被破坏。你不能让两个经理拥有同一个指针——QCache和shared_ptr。这导致了混乱:谢谢你的回答和帮助。问题是,我有一个shared_ptr向量,我想把它们的一部分放到我的QCache中。如果我将指针设置为缓存,但销毁了其中的向量和共享指针,会发生什么?内存会被释放,而我的缓存不会指向任何地方吗?@adapto,如果你尝试这样做,你的程序将被破坏。您不能让两个管理器拥有相同的指针—QCache和shared_ptr。这导致了混淆: