#include <stdio.h>
class Method {
public :
Method( ) { }
virtual void Rum( ) ;
} ;
class Euler : public Method {
public :
Euler( ) { }
virtual void Rum( ) {
printf ( "ahoj\n " ) ;
}
} ;
class Kutta : public Method {
public :
Kutta( ) { }
virtual void Rum( ) {
printf ( "ahoj2\n " ) ;
}
} ;
class Simulator {
public :
Method * pointer;
Simulator( ) { }
void setmethod( Method* m) { pointer = m; }
} ;
int main( ) {
Simulator s ;
s.setmethod ( new Kutta( ) ) ;
s.pointer - > Rum( ) ;
s.setmethod ( new Euler( ) ) ;
s.pointer - > Rum( ) ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKY2xhc3MgTWV0aG9kIHsKICAgIHB1YmxpYzogICAgCiAgICBNZXRob2QoKXt9CiAgICB2aXJ0dWFsIHZvaWQgUnVtKCk7Cn07CmNsYXNzIEV1bGVyIDogcHVibGljIE1ldGhvZCB7CiAgICBwdWJsaWM6CiAgICBFdWxlcigpe30KICAgIHZpcnR1YWwgdm9pZCBSdW0oKSB7CiAgICAgICAgcHJpbnRmKCJhaG9qXG4iKTsKICAgIH0gICAgCn07CmNsYXNzIEt1dHRhIDogcHVibGljIE1ldGhvZCB7CiAgICBwdWJsaWM6CiAgICBLdXR0YSgpe30KICAgIHZpcnR1YWwgdm9pZCBSdW0oKSB7CiAgICAgICAgcHJpbnRmKCJhaG9qMlxuIik7CiAgICB9ICAgIAp9OwpjbGFzcyBTaW11bGF0b3IgewogICAgcHVibGljOgogICAgTWV0aG9kICpwb2ludGVyOwogICAgU2ltdWxhdG9yKCkge30KICAgIHZvaWQgc2V0bWV0aG9kKE1ldGhvZCogbSkgeyBwb2ludGVyID0gbTsgfQp9OwogCmludCBtYWluKCkgewogICAgU2ltdWxhdG9yIHMgOwogICAgcy5zZXRtZXRob2QobmV3IEt1dHRhKCkpOwogICAgcy5wb2ludGVyLT5SdW0oKTsKICAgIHMuc2V0bWV0aG9kKG5ldyBFdWxlcigpKTsKICAgIHMucG9pbnRlci0+UnVtKCk7Cn0=