fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class BaseClass{
  6. int x;
  7. public:
  8. BaseClass(){x = 0;}
  9.  
  10. friend istream& operator>>(istream& stream, BaseClass &a){ stream >> a.x; return stream; }
  11. friend ostream& operator<<(ostream& stream, BaseClass const &a)
  12. { stream << "X = " << a.x << endl; return stream; }
  13. void print(){ cout << x; }
  14. };
  15.  
  16. class SubClass1: public BaseClass{
  17. int y;
  18. public:
  19. SubClass1(){y = 0;}
  20.  
  21. friend istream& operator>>(istream& stream, SubClass1 &b)
  22. {
  23. cout << "hit" << endl;
  24. stream >> dynamic_cast<BaseClass&>(b);
  25.  
  26. //WON'T RUN THIS PART OF CODE __________________________
  27. stream >> b.y;
  28. }
  29. friend ostream& operator<<(ostream& stream, SubClass1 const &b)
  30. { stream << "y = " << b.y << endl; return stream; }
  31.  
  32. void print(){ cout << y; }
  33. };
  34.  
  35. BaseClass* createNewClass(BaseClass * temp)
  36. {
  37. cout << "Input 2 values: ";
  38. cin >> *temp;
  39. return temp;
  40. }
  41.  
  42. int main()
  43. {
  44. vector<BaseClass*> db;
  45. db.push_back(createNewClass(new SubClass1));
  46.  
  47.  
  48. cout << "\nPrinting Data: " << endl;
  49. cout << *db[0] << endl;
  50. }
Success #stdin #stdout 0s 2864KB
stdin
1 2
stdout
Input 2 values: 
Printing Data: 
X = 1