读书人

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

发布时间: 2012-02-16 21:30:36 作者: rapoo

一个关于类继承和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();
...
[解决办法]
刚想说,无奈楼上说的太对了

读书人网 >C++

热点推荐