我有一个基类和一个派生类;另一方面,我制作了一个使用 STL 的 List 类。基类有一个名为 的虚函数PrintData()
,它打印一个属于基类的整数。在派生类中;同一个函数printData()
打印一个属于 Derived 的整数和另一个来自 Base 类的整数。
问题是,在 List 类中,我只是从 Base 获取数据,无论我是否在列表中插入了 Derived 实例。
我需要打印派生数据,也应该有基础数据。这是代码:
#pragma once;
#include <iostream>
#include <sstream>
using namespace std;
class Base{
protected:
int x;
public:
Base(){
x=3;
}
void setX(int a){
x=a;
}
int getX(){
return x;
}
virtual string printData(){
stringstream f;
f<<getX()<<endl;
return f.str();
}
};
class Derived : public Base{
int a;
public:
Derived(){
this->Base::Base();
a=4;
}
void setA(int x){
a=x;
}
int getA(){
return a;
}
string printData(){
stringstream a;
a<<getA()<<getX()<<endl;
return a.str();
}
};
这是 List 类:
#pragma once;
#include "Prueba.cpp"
#include <list>
class Lista{
list<Base*> lp;
public:
Lista(){
}
void pushFront(Base* c){
lp.push_front(c);
}
void pushBack(Base* c){
lp.push_back(c);
}
void printList(){
list<Base*>::const_iterator itr;
for(itr=lp.begin(); itr!=lp.end(); itr++){
cout<<(*itr)->printData();
}
}
~Lista(){
}
};
int main(){
Derived* d=new Derived();
Lista* l=new Lista();
l->pushFront(d);
l->printList();
system("Pause");
return 0;
}
我只是获取基类数据,即值为 3 的整数。但我没有从 Derived 获取值为 4 的整数。