Присвойте unique_ptr производного класса базовому классу [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Присвойте unique_ptr производного класса базовому классу [дубликат]

Сообщение Anonymous »

Почему этот код не компилируется?
#include

struct Base {
};

struct Derived: Base {
int n;
};

int main() {
std::unique_ptr base_ptr = std::make_unique(5);
}

Я просмотрел источники unique_ptr и похоже, что они позволяют перемещать unique_ptr производных классов https://github.com/gcc-mirror/gcc/ blob/master/libstdc%2B%2B-v3/include/bits/unique_ptr.h#L368
Мне это нужно, чтобы я мог собирать сообщения разного типа, если это коллекция для дальнейшей работы их
Компилятор выводит:
/usr/include/c++/13/bits/unique_ptr.h:1070:30: error: could not convert ‘std::forward((* & __args#0))’ from ‘int’ to ‘arb::exchange_connector::Base’
1070 | { return unique_ptr(new _Tp(std::forward(__args)...)); }


Подробнее здесь: https://stackoverflow.com/questions/786 ... base-class

Вернуться в «C++»