还请教一个关于C++的问题# Programming - 葵花宝典
q*s
1 楼
做一个程序,一个父类(A),下面有几个子类(比如B),所有子类的实例都放在一个
vector的集合中,集合中的对象当然都是父类型的了。但是我发现问题,如果从集合中
取出实例,这时就不能调用子类的override的函数了(比如tellMe)。下面是我的一个
测试程序,请各位指点一下:
// main.cpp
#include "A.h"
#include "B.h"
#include
using namespace std;
int main()
{
vector vec;
for(int i=0; i<10; i++)
{
A* a = new B();
a->tellMe();
vec.push_back(*a);
}
for(int i=0; i<10; i++)
{
((A)vec[i]).tellMe(i*8);
}
return 0;
}
====================
// A.h
#ifnd
vector的集合中,集合中的对象当然都是父类型的了。但是我发现问题,如果从集合中
取出实例,这时就不能调用子类的override的函数了(比如tellMe)。下面是我的一个
测试程序,请各位指点一下:
// main.cpp
#include "A.h"
#include "B.h"
#include
using namespace std;
int main()
{
vector vec;
for(int i=0; i<10; i++)
{
A* a = new B();
a->tellMe();
vec.push_back(*a);
}
for(int i=0; i<10; i++)
{
((A)vec[i]).tellMe(i*8);
}
return 0;
}
====================
// A.h
#ifnd