Добавление наследника вместо базового класса в emplace_back приводит к ошибке C2243
#include <vector>
class A {};
class C {
public:
C(A*);
};
class B : A {
void DoSomething()
{
std::vector<C> v;
v.emplace_back(this);
}
};
Пытаюсь добавить в вектор некоторый класс, который ожидает указатель на базовый класс в конструкторе, передавая ему наследника. Если использовать push_back, то всё работает. При emplace_back же возникает ошибка:
error C2243: 'type cast': conversion from '_Ty' to 'A *' exists, but is inaccessible
В чём причина этой ошибки? Как исправить?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Добавьте public в объявление наследования
class B : public A {
Полный код: https://ideone.com/R6w3iK