从std :: make_shared到std :: shared_ptr的赋值无提示失败? (VS2012 Bug)

时间:2013-10-11 14:51:42

标签: c++ visual-studio-2010 stl

编辑:重命名全局变量就行了。同样在同一个项目中的其他CPP文件中重复使用。编辑器“混淆”变量,显示另一个具有相同名称的shared_ptr的内容!

感谢所有回答并试图提供帮助的人;)


在VS2012 IDE,VS2010编译器中,调试

从make_shared分配时,它不起作用(shared_ptr保持为nullptr)。

我可以在调试器中看到调用类ctor。

在头文件中

    struct  ROLLWRKAREA  Workarea
    {
        short idLoc;
// ...
    ROLLWRKAREA(short idLocation=LS_NOWHERE) : 
        idLoc(idLocation),
// …
};
typedef std::shared_ptr<ROLLWRKAREA> LPROLLWRKAREA;

在我的CPP中 - &gt;

static LPROLLWRKAREA pWA; // ...and pointer

BOOL CRollEx::OnInitDialog ()
{
         CMMDialog::OnInitDialog ();

    pWA = std::make_shared<ROLLWRKAREA>();

... pWA在此行之后为空(nullptr)。

这是预期的吗?我在这里做些蠢事吗?有解决方法吗?我试图避免使用.reset(new ROLLWRKAREA())

提前致谢

1 个答案:

答案 0 :(得分:-2)

在行中pWA = std::make_shared<ROLLWRKAREA>();你需要提供一些东西来分享...
在那之前,你得到的是你能想到的最明智的:NULL