0

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

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


在 VS2012 IDE、VS2010 编译器、Debug

从 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 ->

static LPROLLWRKAREA pWA; // ...and pointer

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

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

… pWA 在这一行之后有空 (nullptr)。

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

提前致谢

4

1 回答 1

-2

在行中,
pWA = std::make_shared<ROLLWRKAREA>();您需要提供一些东西来共享...
在此之前,您会得到最明智的期望:NULL

于 2013-10-11T14:58:10.017 回答