Re[2]: Интерфейсы и реализации
От: qaz77  
Дата: 06.03.24 13:33
Оценка:
Здравствуйте, Marty, Вы писали:
M>value-классы

M>
struct Cursor
M>{

M>    Cursor() = delete;
M>    Cursor(const Cursor&) = default;
M>    Cursor& operator=(const Cursor&) = default;
M>    Cursor(Cursor&&) = default;
M>    Cursor& operator=(Cursor&&) = default;

M>    Cursor(std::shared_ptr<ICursor> pimpl) : m_pImpl(pimpl) {}

M>protected:

M>    std::shared_ptr<ICursor>  m_pImpl;

M>};


Я бы сказал не value, а handle-классы.
Тут же несколько экземпляров при копировании будут шарить одну реализацию.
А value-семантика — это когда полностью независимые и равные объекты получаются.
В данном примере глубокое копирование понадобиться (через виртуальный метод clone, например).

Я, конечно, не знаю специфики вашей задачи, но для pimpl бы использовал unique_ptr.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.