LINUX.ORG.RU

Вопросик по C++ NULL

 ,


0

1

Я тут изучаю с++ ) Не могу понять как мне проверить что объект создан?

Process{
  public:
    Process(const char* cmd_){}
  ...
}


далее я объявляю
Process ffplay=NULL;

if(ffplay){} //ошибка
//conditional expression of type 'Process' is illegal

if(ffplay != NULL && !ffplay.isClosed()){} //ошибка
//binary '!=': no operator found which takes a left-hand operand of type 'Process' (or there is no acceptable conversion)



ffplay ведь изначально NULL(=0)

★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от gobot

Так работает! Это нормальный способ?

это правильный способ. только потом его надо удалить через delete. поскольку обьект создался на куче, а сборки мусора в плюсах нет.

alysnix ★★★
()
Ответ на: комментарий от gobot

Ну вообще, т.к. ты пишешь в 2020ом году лучше поменяй Process* на unique_ptr<Process> или shared_ptr<Process> тогда тебе не придется следить за тем, вызвал ты delete или нет.

Aswed ★★★★★
()
Ответ на: комментарий от alysnix

Тогда просто создание объекта на стеке и всё. Либо умные указатели типа unique_ptr<Process>(new Process(«ffplay»))

LongLiveUbuntu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.