Здравствуйте, Marty, Вы писали:
В общем, решил сделать на интерфейсах и shared_ptr, но не показывать их пользователю, а обернуть в value-классы, получается что-то типа pimpl'а:
struct Cursor
{
Cursor() = delete;
Cursor(const Cursor&) = default;
Cursor& operator=(const Cursor&) = default;
Cursor(Cursor&&) = default;
Cursor& operator=(Cursor&&) = default;
Cursor(std::shared_ptr<ICursor> pimpl) : m_pImpl(pimpl) {}
protected:
std::shared_ptr<ICursor> m_pImpl;
};
В принципе, если захочется в жоский эмбед портануть, то можно будет выкинуть пимплы, и запилить туда непосредственную реализацию, при этом внешний интерфейс для пользователя останется тем же самым, и прикладной код можно будет переносить как есть