#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+CiAKY2xhc3MgTWV0aG9kIHsKICAgIHB1YmxpYzogICAgCiAgICB2aXJ0dWFsIHZvaWQgUnVtKCk7Cn07CmNsYXNzIEV1bGVyIDogcHVibGljIE1ldGhvZCB7CiAgICB2aXJ0dWFsIHZvaWQgUnVtKCkgewogICAgICAgIHByaW50ZigiYWhvalxuIik7CiAgICB9ICAgIAp9OwpjbGFzcyBLdXR0YSA6IHB1YmxpYyBNZXRob2QgewogICAgdmlydHVhbCB2b2lkIFJ1bSgpIHsKICAgICAgICBwcmludGYoImFob2oyXG4iKTsKICAgIH0gICAgCn07CmNsYXNzIFNpbXVsYXRvciB7CiAgICBwdWJsaWM6CiAgICBNZXRob2QgKnBvaW50ZXI7CiAgICBTaW11bGF0b3IoKTsKICAgIHZvaWQgc2V0bWV0aG9kKE1ldGhvZCogbSkgeyBwb2ludGVyID0gbTsgfQp9OwogCmludCBtYWluKCkgewogICAgU2ltdWxhdG9yIHMgOwogICAgcy5zZXRtZXRob2QobmV3IEt1dHRhKCkpOwogICAgcy5wb2ludGVyLT5SdW0oKTsKICAgIHMuc2V0bWV0aG9kKG5ldyBFdWxlcigpKTsKICAgIHMucG9pbnRlci0+UnVtKCk7Cn0=
compilation info
/home/wWTHI5/cclXxbEJ.o: In function `main':
prog.cpp:(.text+0x16): undefined reference to `Simulator::Simulator()'
/home/wWTHI5/cclXxbEJ.o:(.rodata._ZTI5Kutta[typeinfo for Kutta]+0x8): undefined reference to `typeinfo for Method'
/home/wWTHI5/cclXxbEJ.o:(.rodata._ZTI5Euler[typeinfo for Euler]+0x8): undefined reference to `typeinfo for Method'
collect2: ld returned 1 exit status
stdout