#include <iostream>
#include <vector>
using namespace std;
class BaseClass{
public:
int x;
public:
BaseClass(){x = 0;}
virtual istream& fromSerial(istream& stream){ return stream >> x; }
virtual void print(){
cout << "BaseClass::x = " << x << endl;
}
virtual ~BaseClass(){}
};
class SubClass1: public BaseClass{
public:
int y;
public:
SubClass1(){y = 0;}
virtual istream& fromSerial(istream& stream){
BaseClass::fromSerial(stream); //read baseclass first
return stream >> y;
}
virtual void print(){
BaseClass::print();
cout << "SubClass1::y = " << y << endl;
}
};
BaseClass* createNewClass(BaseClass * temp)
{
cout << "Input 2 values: ";
temp->fromSerial(cin);
return temp;
}
int main()
{
vector<BaseClass*> db;
db.push_back(createNewClass(new SubClass1));
cout << "\nPrinting Data: " << endl;
db[0]->print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZUNsYXNzewpwdWJsaWM6CiAgICBpbnQgeDsKcHVibGljOgogICAgQmFzZUNsYXNzKCl7eCA9IDA7fQoKICAgIHZpcnR1YWwgaXN0cmVhbSYgZnJvbVNlcmlhbChpc3RyZWFtJiBzdHJlYW0peyByZXR1cm4gc3RyZWFtID4+IHg7IH0KICAgIHZpcnR1YWwgdm9pZCBwcmludCgpewogICAgIGNvdXQgPDwgIkJhc2VDbGFzczo6eCA9ICIgPDwgIHggPDwgZW5kbDsKICAgIH0KICAgIHZpcnR1YWwgfkJhc2VDbGFzcygpe30KfTsKCmNsYXNzIFN1YkNsYXNzMTogcHVibGljIEJhc2VDbGFzc3sKcHVibGljOgogICAgaW50IHk7CnB1YmxpYzoKICAgIFN1YkNsYXNzMSgpe3kgPSAwO30KCiAgIHZpcnR1YWwgaXN0cmVhbSYgZnJvbVNlcmlhbChpc3RyZWFtJiBzdHJlYW0peyAgICAgICAgICAgIAogICAgICAgICAgICBCYXNlQ2xhc3M6OmZyb21TZXJpYWwoc3RyZWFtKTsgLy9yZWFkIGJhc2VjbGFzcyBmaXJzdAogICAgICAgICAgICByZXR1cm4gc3RyZWFtID4+IHk7CiAgICB9CiAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoKXsgCiAgICAgQmFzZUNsYXNzOjpwcmludCgpOwogICAgIGNvdXQgPDwgIlN1YkNsYXNzMTo6eSA9ICIgPDwgeSA8PCBlbmRsOwogICAgfQp9OwoKQmFzZUNsYXNzKiBjcmVhdGVOZXdDbGFzcyhCYXNlQ2xhc3MgKiB0ZW1wKQp7CiAgICBjb3V0IDw8ICJJbnB1dCAyIHZhbHVlczogIjsKICAgIHRlbXAtPmZyb21TZXJpYWwoY2luKTsKICAgIHJldHVybiB0ZW1wOwp9CgppbnQgbWFpbigpCnsKICAgIHZlY3RvcjxCYXNlQ2xhc3MqPiBkYjsKICAgIGRiLnB1c2hfYmFjayhjcmVhdGVOZXdDbGFzcyhuZXcgU3ViQ2xhc3MxKSk7CgoKICAgIGNvdXQgPDwgIlxuUHJpbnRpbmcgRGF0YTogIiA8PCBlbmRsOwogICAgZGJbMF0tPnByaW50KCk7Cn0=