Назначение из std :: make_shared в std :: shared_ptr завершается неудачно? (VS2012 Bug)

0

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())

заранее спасибо

Теги:
visual-studio-2010
stl

1 ответ

-1

В линии
pWA = std::make_shared<ROLLWRKAREA>(); вам нужно дать что-то, чтобы сделать общий...
До тех пор вы получите наиболее разумный результат: NULL

  • 2
    Вы даете аргументы конструктора для make_shared . Если вы ничего не дадите, то вы должны получить объект, созданный по умолчанию, а не ничего.
  • 0
    Если вызываемый конструктор не принимает аргументов, все должно быть в порядке.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню