#include <stdio.h>
class Method {
public :
virtual void Rum( ) ;
} ;
class Euler : public Method {
virtual void Rum( ) {
printf ( "ahoj\n " ) ;
}
} ;
class Kutta : public Method {
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+CiAKY2xhc3MgTWV0aG9kIHsKICAgIHB1YmxpYzogICAgCiAgICB2aXJ0dWFsIHZvaWQgUnVtKCk7Cn07CmNsYXNzIEV1bGVyIDogcHVibGljIE1ldGhvZCB7CiAgICB2aXJ0dWFsIHZvaWQgUnVtKCkgewogICAgICAgIHByaW50ZigiYWhvalxuIik7CiAgICB9ICAgIAp9OwpjbGFzcyBLdXR0YSA6IHB1YmxpYyBNZXRob2QgewogICAgdmlydHVhbCB2b2lkIFJ1bSgpIHsKICAgICAgICBwcmludGYoImFob2oyXG4iKTsKICAgIH0gICAgCn07CmNsYXNzIFNpbXVsYXRvciB7CiAgICBwdWJsaWM6CiAgICBNZXRob2QgKnBvaW50ZXI7CiAgICBTaW11bGF0b3IoKSB7fQogICAgdm9pZCBzZXRtZXRob2QoTWV0aG9kKiBtKSB7IHBvaW50ZXIgPSBtOyB9Cn07CiAKaW50IG1haW4oKSB7CiAgICBTaW11bGF0b3IgcyA7CiAgICBzLnNldG1ldGhvZChuZXcgS3V0dGEoKSk7CiAgICBzLnBvaW50ZXItPlJ1bSgpOwogICAgcy5zZXRtZXRob2QobmV3IEV1bGVyKCkpOwogICAgcy5wb2ludGVyLT5SdW0oKTsKfQ==