>>611
… C++ の基本から勉強し直した方が良いような。

struct Base {
  virtual ~Base() {}
  ...
};

class Deriv : public Base {...};

using boost::shared_ptr;
using std::queue;

queue<shared_ptr<Base> > q;
q.push(shared_ptr<Base>(new Deriv);