编辑:重命名全局变量就可以了。在同一项目的其他 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())
提前致谢