fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class BaseClass{
  6. public:
  7. int x;
  8. public:
  9. BaseClass(){x = 0;}
  10.  
  11. virtual istream& fromSerial(istream& stream){ return stream >> x; }
  12. virtual void print(){
  13. cout << "BaseClass::x = " << x << endl;
  14. }
  15. virtual ~BaseClass(){}
  16. };
  17.  
  18. class SubClass1: public BaseClass{
  19. public:
  20. int y;
  21. public:
  22. SubClass1(){y = 0;}
  23.  
  24. virtual istream& fromSerial(istream& stream){
  25. BaseClass::fromSerial(stream); //read baseclass first
  26. return stream >> y;
  27. }
  28. virtual void print(){
  29. BaseClass::print();
  30. cout << "SubClass1::y = " << y << endl;
  31. }
  32. };
  33.  
  34. BaseClass* createNewClass(BaseClass * temp)
  35. {
  36. cout << "Input 2 values: ";
  37. temp->fromSerial(cin);
  38. return temp;
  39. }
  40.  
  41. int main()
  42. {
  43. vector<BaseClass*> db;
  44. db.push_back(createNewClass(new SubClass1));
  45.  
  46.  
  47. cout << "\nPrinting Data: " << endl;
  48. db[0]->print();
  49. }
Success #stdin #stdout 0s 2824KB
stdin
1 2
stdout
Input 2 values: 
Printing Data: 
BaseClass::x = 1
SubClass1::y = 2