Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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++ 取消引用并复制唯一\u ptr的值_C++_Smart Pointers_Unique Ptr - Fatal编程技术网

C++ 取消引用并复制唯一\u ptr的值

C++ 取消引用并复制唯一\u ptr的值,c++,smart-pointers,unique-ptr,C++,Smart Pointers,Unique Ptr,我有一个函数,它被赋予一个字符串唯一的\u ptr。我想复制这个值lambdas,并使用它调用接受std::string的函数。我在下面做的是正确的方法吗: void someFunc(std::unique_ptr<std::string> id) { const std::string idStr = *id; stream.subscribe([=](auto arg1) { arg1.invoke(idStr); }); } 然而,这对我来说并不起作用。它失

我有一个函数,它被赋予一个字符串唯一的\u ptr。我想复制这个值lambdas,并使用它调用接受std::string的函数。我在下面做的是正确的方法吗:

void someFunc(std::unique_ptr<std::string> id) {
    const std::string idStr = *id;
    stream.subscribe([=](auto arg1) { arg1.invoke(idStr); });
}
然而,这对我来说并不起作用。它失败,出现“无可行转换”错误

我有一个函数,它被赋予一个字符串唯一的\u ptr。我想复制那个值

void someFunc(std::unique_ptr<std::string> id) {
    const std::string idStr = *id;

这是不正确的。你不能那样做。链接问题中的示例没有这样做。

std::string idStr=std::move(id)标准::unqiue_ptr
时,代码>无法工作。我想你误解了这个问题@SergeyA我知道这不适合我。然而,你的评论对我来说毫无意义。在链接的讨论中,这也是一个独特的主题。无论如何,我在这里问的是我在做什么(idStr=*id)是在做我认为它做的事情,是我前进的正确方式。我不明白问题是什么。我不知道你所做的是对还是错,因为你没有告诉我们关于你的用例的任何事情。什么是
,什么是
订阅
,什么是
调用
void someFunc(std::unique_ptr id)
是一个奇怪的函数签名。由于
unique\u ptr
是通过值传递的,这意味着呼叫站点将放弃对它的所有权。如果你不在乎它,你没有用它做任何事情,那么为什么还要用
独特的\u ptr
。您可以让
someFunc
按值获取字符串并将其移动到lambda中。
void someFunc(std::unique_ptr<std::string> id) {
    const std::string idStr = *id;
std::string idStr = std::move(id);