Сообщение Отсутствующий конструктор копирования в MSVC2019 вызывает ош от 07.03.2024 12:52
Изменено 07.03.2024 12:53 Marty
Отсутствующий конструктор копирования в MSVC2019 вызывает ошибку компиляции
Здравствуйте!
MSVC2019, С++17
Есть базовый класс, конструктор копирования запрещён.
Есть реализация
В классе окна есть функция создания
Говорит, что "attempting to reference a deleted function"
Ошибка иницииируется в недрах std в _Construct_in_place:
Ладно, попробовал вернуть через std::move. Стало ругаться на строчку с ним, но суть осталась та же.
Видимо, я чего-то не понимаю. Не подскажете, что?
MSVC2019, С++17
Есть базовый класс, конструктор копирования запрещён.
Есть реализация
struct WindowTimerImpl : public WindowTimerBase
{
//...
WindowTimerImpl(HWND h, UINT_PTR id, timeout_t timeoutMs) {}
static
WindowTimerImpl create(HWND h, UINT_PTR requestedId, timeout_t timeoutMs)
{
auto id = ::SetTimer(h, requestedId, timeoutMs, 0);
if (id==0)
{
throw std::runtime_error("Failed to create WindowTimer");
}
return WindowTimerImpl(h, id, timeoutMs, true);
// return std::move(WindowTimerImpl(h, id, timeoutMs, true)); // !!! move version
}
//...
};В классе окна есть функция создания
virtual WindowTimer createTimer(timeout_t timeoutMs) const override
{
auto pSharedImpl = std::make_shared<WindowTimerImpl>(WindowTimerImpl::create(getHwnd(), curTimerId++, timeoutMs));
//...Говорит, что "attempting to reference a deleted function"
Ошибка иницииируется в недрах std в _Construct_in_place:
| Скрытый текст | |
| |
Ладно, попробовал вернуть через std::move. Стало ругаться на строчку с ним, но суть осталась та же.
Видимо, я чего-то не понимаю. Не подскажете, что?
Отсутствующий конструктор копирования в MSVC2019 вызывает ош
Здравствуйте!
MSVC2019, С++17
Есть базовый класс, конструктор копирования запрещён.
Есть реализация
В классе окна есть функция создания
Говорит, что "attempting to reference a deleted function"
Ошибка иницииируется в недрах std в _Construct_in_place при вызове forward:
Ладно, попробовал вернуть через std::move. Стало ругаться на строчку с ним, но суть осталась та же.
Видимо, я чего-то не понимаю. Не подскажете, что?
MSVC2019, С++17
Есть базовый класс, конструктор копирования запрещён.
Есть реализация
struct WindowTimerImpl : public WindowTimerBase
{
//...
WindowTimerImpl(HWND h, UINT_PTR id, timeout_t timeoutMs) {}
static
WindowTimerImpl create(HWND h, UINT_PTR requestedId, timeout_t timeoutMs)
{
auto id = ::SetTimer(h, requestedId, timeoutMs, 0);
if (id==0)
{
throw std::runtime_error("Failed to create WindowTimer");
}
return WindowTimerImpl(h, id, timeoutMs, true);
// return std::move(WindowTimerImpl(h, id, timeoutMs, true)); // !!! move version
}
//...
};В классе окна есть функция создания
virtual WindowTimer createTimer(timeout_t timeoutMs) const override
{
auto pSharedImpl = std::make_shared<WindowTimerImpl>(WindowTimerImpl::create(getHwnd(), curTimerId++, timeoutMs));
//...Говорит, что "attempting to reference a deleted function"
Ошибка иницииируется в недрах std в _Construct_in_place при вызове forward:
| Скрытый текст | |
| |
Ладно, попробовал вернуть через std::move. Стало ругаться на строчку с ним, но суть осталась та же.
Видимо, я чего-то не понимаю. Не подскажете, что?