Re[10]: Отсутствующий конструктор копирования в MSVC2019 выз
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.03.24 20:47
Оценка:
Здравствуйте, andrey.desman, Вы писали:

M>>Виноват

M>>И что делать, если деструктор есть? Кроме как явно описать конструктор/оп= перемещения?

AD>Явно задекларировать его как default.


Так работает, да.


AD>Но вроде как у тебя все равно же явные телодвижения нужны на перемещение? Timer id переместить в новый объект, в старом занулить, не?


Точно, мой косяк

Кстати, а есть рекомендации ведущих собаководов, как правильно писать move ctor/move op=?


UPD
Написал так:
  Скрытый текст
struct WindowTimerImpl : public IWindowTimer
{

    HWND         hWnd           = 0;
    UINT_PTR     idTimerEvent   = 0;
    timeout_t    timerTimeoutMs = 0;
    bool         running        = false;


    //WindowTimerImpl(HWND h, UINT_PTR id) : hWnd(h), idTimerEvent(id) {}

    WindowTimerImpl(HWND h, UINT_PTR id, timeout_t timeoutMs, bool bRunning) : hWnd(h), idTimerEvent(id), timerTimeoutMs(timeoutMs), running(bRunning)
    {
        if (running)
        {
            restart();
        }
    }

    WindowTimerImpl(WindowTimerImpl&& other)
    : hWnd          (std::exchange(other.hWnd, (HWND)0))
    , idTimerEvent  (std::exchange(other.idTimerEvent, 0u))
    , timerTimeoutMs(std::exchange(other.timerTimeoutMs, 0u))
    , running       (std::exchange(other.running, false))
    {
    }

    WindowTimerImpl& operator=(WindowTimerImpl&& other)
    {
        hWnd           = std::exchange(other.hWnd, (HWND)0);
        idTimerEvent   = std::exchange(other.idTimerEvent, 0u);
        timerTimeoutMs = std::exchange(other.timerTimeoutMs, 0u);
        running        = std::exchange(other.running, false);
        return *this;
    }
};


Но, по идее, у меня есть значения по умолчанию, или как такая inplace инициализация называется? По идее, mctor = default и наличия такой инициализации должно хватать для генерации того, что мне пришлось ручками натоптать, не?
Маньяк Робокряк колесит по городу
Отредактировано 07.03.2024 21:09 Marty . Предыдущая версия . Еще …
Отредактировано 07.03.2024 20:59 Marty . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.