Информация об изменениях

Сообщение Re[3]: Deleter unique_ptr для ostream от 19.04.2023 9:02

Изменено 19.04.2023 9:07 rg45

Re[3]: Deleter unique_ptr для ostream
Здравствуйте, _agg, Вы писали:

_>Внимательнее читайте, этот макрос объявлен в библиотеке, и эта библиотека использует этот поток, а пользователь библиотеки уже сам назначает куда же этот std::ostream будет писать, поэтому и было написано таким образом:
_>//объявление  OSTREAM это std::ostream 
_>std::unique_ptr<OSTREAM> ostm;
_>...
_>//инициализация 
_>ostm.reset(new std::ofstream("file.txt", std::ios::app))   // это рабочий вариант

Да, виноват, невнимательно посмотрел.


_>//вот это не рабочий вариант потому что OSTREAM это std::ostream а инициализировать его нужно файловым потоком std::ofstream
_>pstm = std::make_unique<OSTREAM>("file.txt", std::ios::app)

Вариант с make_unique вполне рабочий, нужно только чуть подправить:

pstm = std::make_unique<std::ofstream>("file.txt", std::ios::app);
Re[3]: Deleter unique_ptr для ostream
Здравствуйте, _agg, Вы писали:

_>Внимательнее читайте, этот макрос объявлен в библиотеке, и эта библиотека использует этот поток, а пользователь библиотеки уже сам назначает куда же этот std::ostream будет писать, поэтому и было написано таким образом:
_>//объявление  OSTREAM это std::ostream 
_>std::unique_ptr<OSTREAM> ostm;
_>...
_>//инициализация 
_>ostm.reset(new std::ofstream("file.txt", std::ios::app))   // это рабочий вариант

Да, виноват, невнимательно посмотрел.


_>//вот это не рабочий вариант потому что OSTREAM это std::ostream а инициализировать его нужно файловым потоком std::ofstream
_>pstm = std::make_unique<OSTREAM>("file.txt", std::ios::app)

Вариант с make_unique вполне рабочий, нужно только чуть подправить:

pstm = std::make_unique<std::ofstream>("file.txt", std::ios::app);


Ковариантное преобразование типов обеспечивает сам unique_ptr.