一个关于类继承和vector的有关问题

一个关于类继承和vector的问题,高手请进

高手帮我看一下以下的代码为什么不行,是不是我的方法有错,是的话,有没有别的办法能实现我想要的功能的,谢谢啦

#include   <iostream>
#include   <vector>

using   namespace   std;

class   A
{
public:

A(){}

virtual   void   Show()   =   0;
};

class   B   :   public   A
{
public:

B(){}

virtual   void   Show()
{
cout < < "B ";
}
};

class   C   :   public   A
{
public:

C(){}

virtual   void   Show()
{
cout < < "C ";
}
};

int   main()
{
vector <A>   vec;

B   b;
C   c;

vec.push_back(b);

vec.push_back(c);

vector <A> ::iterator   it;

it   =   vec.begin();

while   (it   !=   vec.end())
{
(*it).Show();

it++;
}

return   0;
}

------解决方案--------------------
很明显 造成了“切割”
vector应该存放的基类的指针类型 而不是 基类这种类型。
------解决方案--------------------
A有纯虚函数是抽象类。不能被实例化.改用指针吧。
vector <A*> vec;
...
vec.push_back(&b);
vec.push_back(&c);
vector <A*> ::iterator it
...
(*it)-> Show();
...
------解决方案--------------------
刚想说,无奈楼上说的太对了