EDIT: Переименование глобального var сделал трюк. То же самое было повторно использовано в других файлах 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;
В My CPP ->
static LPROLLWRKAREA pWA; // ...and pointer
BOOL CRollEx::OnInitDialog ()
{
CMMDialog::OnInitDialog ();
pWA = std::make_shared<ROLLWRKAREA>();
... pWA имеет пустую (nullptr) после этой строки.
Ожидается ли это? Я делаю что-то глупое здесь? Есть ли обходной путь? Я пытаюсь избежать использования.reset (новый ROLLWRKAREA())
заранее спасибо
В линии pWA = std::make_shared<ROLLWRKAREA>();
вам нужно дать что-то, чтобы сделать общий...
До тех пор вы получите наиболее разумный результат: NULL
make_shared
. Если вы ничего не дадите, то вы должны получить объект, созданный по умолчанию, а не ничего.