C ++ 11 ponteiros inteligentes e polimorfismo
Eu estou reescrevendo um aplicativo usando ponteiros inteligentes c ++ 11.
Eu tenho uma classe base:
class A {};
E uma classe derivada:
class B : public A {
public:
int b;
};
Eu tenho outra classe que contém um vetor com objetos A ou B:
class C {
public:
vector<shared_ptr<A>> v;
};
Eu não tenho nenhum problema construindo C com objetos A (classe base), mas como posso preenchê-lo com objetos B (classe derivada)?
Estou tentando isso:
for(int i = 0; i < 10; i++) {
v.push_back(make_shared<B>());
v.back()->b = 1;
};
E o compilador retorna: erro: "classe A" não tem nenhum membro chamado "b"