【问题标题】:Trouble assigning a tr1::shared_ptr分配 tr1::shared_ptr 时遇到问题
【发布时间】:2010-06-01 19:40:12
【问题描述】:

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

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

    void Bar();
}

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

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。我做错了什么?

【问题讨论】:

    标签: c++ variable-assignment shared-ptr


    【解决方案1】:

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

    【讨论】:

    • 我明白了。感谢您的帮助。
    【解决方案2】:

    您不能将本机指针分配给共享指针。 shared_ptr 必须使用该值初始化,或者您可以使用本机指针值调用 reset()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多