template<typename T>
class MySwither{
public:
virtual void SetData(T data) = 0;
virtual T GetData() = 0;
virtual ~MySwither() {}
};
class AthleteForm : public MySwither<int> {
private:
int a;
public:
AthleteForm() : a(0){}
void SetData(int data){
a = data;
}
int GetData(){
return a;
}
};
template<typename T>
class AbsObj{
public:
AbsObj(){}
MySwither<T> *obj;
};
class IntObj : public AbsObj<int>{
public:
IntObj(){
obj = new AthleteForm;
}
~IntObj(){
if(obj != nullptr){
delete obj;
}
}
};
int main(int argc, char *argv[])
{
IntObj obj;
return 0;
}
dGVtcGxhdGU8dHlwZW5hbWUgVD4KY2xhc3MgTXlTd2l0aGVyewpwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgU2V0RGF0YShUIGRhdGEpID0gMDsKICAgIHZpcnR1YWwgVCBHZXREYXRhKCkgPSAwOwogICAgdmlydHVhbCB+TXlTd2l0aGVyKCkge30KfTsKCmNsYXNzIEF0aGxldGVGb3JtIDogcHVibGljIE15U3dpdGhlcjxpbnQ+IHsKcHJpdmF0ZToKICAgIGludCBhOwpwdWJsaWM6CiAgICBBdGhsZXRlRm9ybSgpIDogYSgwKXt9CiAgICB2b2lkIFNldERhdGEoaW50IGRhdGEpewogICAgICAgIGEgPSBkYXRhOwogICAgfQogICAgaW50IEdldERhdGEoKXsKICAgICAgICByZXR1cm4gYTsKICAgIH0KfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CmNsYXNzIEFic09iansKcHVibGljOgogICAgQWJzT2JqKCl7fQogICAgTXlTd2l0aGVyPFQ+ICpvYmo7Cn07CgoKY2xhc3MgSW50T2JqIDogcHVibGljIEFic09iajxpbnQ+ewpwdWJsaWM6CiAgICBJbnRPYmooKXsKICAgICAgICBvYmogPSBuZXcgQXRobGV0ZUZvcm07CiAgICB9CiAgICB+SW50T2JqKCl7CiAgICAgICAgaWYob2JqICE9IG51bGxwdHIpewogICAgICAgICAgICBkZWxldGUgb2JqOwogICAgICAgIH0KICAgIH0KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCnsKICAgIEludE9iaiBvYmo7CiAgICByZXR1cm4gMDsKfQ==