还是vector问题,继承类在vector存储后读取之后的函数表现
我希望 va[0].g(); 能调用B::g(); 但他调用的A::g();有什么办法让他调用继承类的g()?
我不想在类中显式增加类型标志
高人帮忙
// vectortest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <vector>
using namespace std;
class A
{
public:
A(){};
~A(){};
virtual void g(){cout<<"in A"<<endl;};
};
class B: public A
{
public :
B(){};
~B(){};
virtual void g(){ cout<<"in B"<<endl;};
};
class C: public A
{
public :
C(){};
~C(){};
virtual void g(){ cout<<"in C"<<endl;};
};
vector <A> va;
int main()
{
B b0,b1,b2;
C c0,c1;
va.push_back(b0);
va.push_back(b1);
va.push_back(b2);
va.push_back(c0);
va.push_back(c1);
b0.g(); //输出 "in B"
b1.g(); //输出 "in B"
b2.g(); //输出 "in B"
c0.g(); //输出 "in C"
c1.g(); //输出 "in C"
va[0].g(); //输出 "in A",希望 "in B"
va[1].g(); //输出 "in A",希望 "in B"
va[2].g(); //输出 "in A",希望 "in B"
va[3].g(); //输出 "in A",希望 "in C"
va[4].g(); //输出 "in A",希望 "in C"
}