I'm rewriting an application using c++11 smart pointers.

I have a base class:

class A {};

And a derived class:

class B : public A {
  public:
  int b;
};

I have another class containing a vector with either A or B objects:

class C {
  public:
  vector<shared_ptr<A>> v;
};

I have no problem constructing C with A (base class) objects but how can I fill it with B (derived class) objects?

I'm trying this:

for(int i = 0; i < 10; i++) {
    v.push_back(make_shared<B>());
    v.back()->b = 1;
};  

And the compiler returns: error: ‘class A’ has no member named ‘b’

Edit
Report