#include <iostream>
#include <vector>
using namespace std;
class BaseClass{
int x;
public:
BaseClass(){x = 0;}
friend istream& operator>>(istream& stream, BaseClass &a){ stream >> a.x; return stream; }
friend ostream& operator<<(ostream& stream, BaseClass const &a)
{ stream << "X = " << a.x << endl; return stream; }
void print(){ cout << x; }
};
class SubClass1: public BaseClass{
int y;
public:
SubClass1(){y = 0;}
friend istream& operator>>(istream& stream, SubClass1 &b)
{
cout << "hit" << endl;
stream >> dynamic_cast<BaseClass&>(b);
//WON'T RUN THIS PART OF CODE __________________________
stream >> b.y;
}
friend ostream& operator<<(ostream& stream, SubClass1 const &b)
{ stream << "y = " << b.y << endl; return stream; }
void print(){ cout << y; }
};
BaseClass* createNewClass(BaseClass * temp)
{
cout << "Input 2 values: ";
cin >> *temp;
return temp;
}
int main()
{
vector<BaseClass*> db;
db.push_back(createNewClass(new SubClass1));
cout << "\nPrinting Data: " << endl;
cout << *db[0] << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZUNsYXNzewogICAgaW50IHg7CnB1YmxpYzoKICAgIEJhc2VDbGFzcygpe3ggPSAwO30KCiAgICBmcmllbmQgaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBzdHJlYW0sIEJhc2VDbGFzcyAmYSl7IHN0cmVhbSA+PiBhLng7IHJldHVybiBzdHJlYW07IH0KICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHN0cmVhbSwgQmFzZUNsYXNzIGNvbnN0ICZhKQogICAgICAgIHsgc3RyZWFtIDw8ICJYID0gIiA8PCBhLnggPDwgZW5kbDsgcmV0dXJuIHN0cmVhbTsgfQogICAgdm9pZCBwcmludCgpeyBjb3V0IDw8IHg7IH0KfTsKCmNsYXNzIFN1YkNsYXNzMTogcHVibGljIEJhc2VDbGFzc3sKICAgIGludCB5OwpwdWJsaWM6CiAgICBTdWJDbGFzczEoKXt5ID0gMDt9CgogICAgZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgc3RyZWFtLCBTdWJDbGFzczEgJmIpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJoaXQiIDw8IGVuZGw7CiAgICAgICAgICAgIHN0cmVhbSA+PiBkeW5hbWljX2Nhc3Q8QmFzZUNsYXNzJj4oYik7CgogICAgICAgICAgICAvL1dPTidUIFJVTiBUSElTIFBBUlQgT0YgQ09ERSBfX19fX19fX19fX19fX19fX19fX19fX19fXwogICAgICAgICAgICBzdHJlYW0gPj4gYi55OwogICAgICAgIH0KICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHN0cmVhbSwgU3ViQ2xhc3MxIGNvbnN0ICZiKQogICAgICAgIHsgc3RyZWFtIDw8ICJ5ID0gIiA8PCBiLnkgPDwgZW5kbDsgcmV0dXJuIHN0cmVhbTsgfQoKICAgIHZvaWQgcHJpbnQoKXsgY291dCA8PCB5OyB9Cn07CgpCYXNlQ2xhc3MqIGNyZWF0ZU5ld0NsYXNzKEJhc2VDbGFzcyAqIHRlbXApCnsKICAgIGNvdXQgPDwgIklucHV0IDIgdmFsdWVzOiAiOwogICAgY2luID4+ICp0ZW1wOwogICAgcmV0dXJuIHRlbXA7Cn0KCmludCBtYWluKCkKewogICAgdmVjdG9yPEJhc2VDbGFzcyo+IGRiOwogICAgZGIucHVzaF9iYWNrKGNyZWF0ZU5ld0NsYXNzKG5ldyBTdWJDbGFzczEpKTsKCgogICAgY291dCA8PCAiXG5QcmludGluZyBEYXRhOiAiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICpkYlswXSA8PCBlbmRsOwp9