无法分配tr1 :: shared_ptr

Max*_*Max 4 c++ variable-assignment shared-ptr

我有一个有tr1 :: shared_ptr作为成员的类,如下所示:

class Foo
{
    std::tr1::shared_ptr<TCODBsp> bsp;

    void Bar();
}
Run Code Online (Sandbox Code Playgroud)

在成员函数栏中,我尝试像这样分配它:

bsp = newTCODBsp(x,y,w,h);

然后g ++给了我这个错误

no match for ‘operator=’ in ‘((yarl::mapGen::MapGenerator*)this)->yarl::mapGen::MapGenerator::bsp = (operator new(40u), (<statement>, ((TCODBsp*)<anonymous>)))’ /usr/include/c++/4.4/tr1/shared_ptr.h:834: note: candidates are: std::tr1::shared_ptr<TCODBsp>& std::tr1::shared_ptr<TCODBsp>::operator=(const std::tr1::shared_ptr<TCODBsp>&)

在我的代码中,Foo实际上是yarl::mapGen::MapGenerator.我究竟做错了什么?

Edw*_*nge 6

打电话.reset(new TCODBsp)或说bsp = std::tr1::shared_ptr(new TCODBsp).共享指针是显式的.您不能只为它们分配ptr类型.