#include <iostream>
using namespace std;
template <typename type1, typename type2>
class baseClass {
private:
type1 member1;
type2 member2;
public:
baseClass() {}
baseClass(type1 member1, type2 member2):member1(member1), member2(member2) {}
type1 get_member1(){return member1;}
type2 get_member2(){return member2;}
virtual ~baseClass() {};
};
template <typename type1, typename type2, typename type3>
class derivedClass : public baseClass<type1, type2> {
private:
type3 member3;
public:
derivedClass(){};
derivedClass(type1 member1, type2 member2, type3 member3): baseClass<type1, type2>(member1, member2), member3(member3){};
type3 get_member3() {return member3;}
~derivedClass(){}
};
int main(int argc, const char * argv[]) {
derivedClass<int, int, int> object(1, 2, 3);
cout << object.get_member1() << endl;
cout << object.get_member1() << " " << object.get_member2() << " " << object.get_member3() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGUxLCB0eXBlbmFtZSB0eXBlMj4KY2xhc3MgYmFzZUNsYXNzIHsKcHJpdmF0ZToKICAgIHR5cGUxIG1lbWJlcjE7CiAgICB0eXBlMiBtZW1iZXIyOwoKcHVibGljOgogICAgYmFzZUNsYXNzKCkge30KICAgIGJhc2VDbGFzcyh0eXBlMSBtZW1iZXIxLCB0eXBlMiBtZW1iZXIyKTptZW1iZXIxKG1lbWJlcjEpLCBtZW1iZXIyKG1lbWJlcjIpIHt9CiAgICB0eXBlMSBnZXRfbWVtYmVyMSgpe3JldHVybiBtZW1iZXIxO30KICAgIHR5cGUyIGdldF9tZW1iZXIyKCl7cmV0dXJuIG1lbWJlcjI7fQogICAgdmlydHVhbCB+YmFzZUNsYXNzKCkge307Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgdHlwZTEsIHR5cGVuYW1lIHR5cGUyLCB0eXBlbmFtZSB0eXBlMz4KY2xhc3MgZGVyaXZlZENsYXNzIDogcHVibGljIGJhc2VDbGFzczx0eXBlMSwgdHlwZTI+IHsKcHJpdmF0ZToKICAgIHR5cGUzIG1lbWJlcjM7CnB1YmxpYzoKICAgIGRlcml2ZWRDbGFzcygpe307CiAgICBkZXJpdmVkQ2xhc3ModHlwZTEgbWVtYmVyMSwgdHlwZTIgbWVtYmVyMiwgdHlwZTMgbWVtYmVyMyk6IGJhc2VDbGFzczx0eXBlMSwgdHlwZTI+KG1lbWJlcjEsIG1lbWJlcjIpLCBtZW1iZXIzKG1lbWJlcjMpe307CiAgICB0eXBlMyBnZXRfbWVtYmVyMygpIHtyZXR1cm4gbWVtYmVyMzt9CiAgICB+ZGVyaXZlZENsYXNzKCl7fQp9OwoKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKSB7CiAgICBkZXJpdmVkQ2xhc3M8aW50LCBpbnQsIGludD4gb2JqZWN0KDEsIDIsIDMpOwogICAgY291dCA8PCBvYmplY3QuZ2V0X21lbWJlcjEoKSA8PCBlbmRsOwogICAgY291dCA8PCBvYmplY3QuZ2V0X21lbWJlcjEoKSA8PCAiICIgPDwgb2JqZWN0LmdldF9tZW1iZXIyKCkgPDwgIiAiIDw8IG9iamVjdC5nZXRfbWVtYmVyMygpIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==