Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Design patterns 共享的_ptr模式拥有函数中的对象 什么是一个好的C++ 设计模式,以从成员函数内部得到一个拥有 SyddYpPT/?_Design Patterns_C++11_Shared Ptr - Fatal编程技术网

Design patterns 共享的_ptr模式拥有函数中的对象 什么是一个好的C++ 设计模式,以从成员函数内部得到一个拥有 SyddYpPT/?

Design patterns 共享的_ptr模式拥有函数中的对象 什么是一个好的C++ 设计模式,以从成员函数内部得到一个拥有 SyddYpPT/?,design-patterns,c++11,shared-ptr,Design Patterns,C++11,Shared Ptr,在我的函数中,我需要将一个共享的\u ptr存储到这个中,然后在另一个范围中检索。这种幼稚的方法行不通: void Foo::doSomething(shared_ptr<Bar> bar) { bar->setFoo(make_shared<Foo>(this)); } void Bar::setFoo(shared_ptr<Foo> foo) { myFoo.reset(foo); } void Foo::doSomething(

在我的函数中,我需要将一个
共享的\u ptr
存储到
这个
中,然后在另一个范围中检索。这种幼稚的方法行不通:

void Foo::doSomething(shared_ptr<Bar> bar)
{
    bar->setFoo(make_shared<Foo>(this));
}

void Bar::setFoo(shared_ptr<Foo> foo)
{
    myFoo.reset(foo);
}
void Foo::doSomething(共享条)
{
bar->setFoo(使_共享(此));
}
空栏::setFoo(共享的\u ptr foo)
{
myFoo.reset(foo);
}
现在如果我这样做了

shared_ptr<Foo> foo(new Foo());
shared_ptr<Bar> bar(new Bar());
foo->doSomething(bar);
shared_ptr foo(new foo());
共享工具栏(新工具栏());
foo->doSomething(巴);
我以后无法知道
bar->myFoo
是否仍然有效

问题是我正在为同一个
Foo
实例创建第二个
shared_ptr
。但是我无法从函数中访问
共享的\u ptr
,因为我只有
这个

(显然,实际设置比这个简单的示例更复杂)

您正在查找和

您正在查找和