#include <iostream>
class Button;
class AirCraft{
public:
void click_button(Button* butt){
if(butt == p_shoot)
this->shoot_target(butt);
else if(butt == p_fly)
this->keep_flying(butt);
}
void set_fly(Button* butt){
p_shoot = butt;
}
void set_shoot(Button* butt){
p_fly = butt;
}
void shoot_target(Button* ){
std
::cout << "...shooting.\n"; }
void keep_flying(Button* ){
std
::cout << "...flying.\n"; }
private:
Button* p_shoot;
Button* p_fly;
};
class Button{
public:
Button(AirCraft* name):_F117(name){
}
void press(){
_F117->click_button(this);
}
private:
AirCraft* _F117;
};
int main(){
AirCraft my_flight;
Button fly(&my_flight);
Button shoot(&my_flight);
my_flight.set_shoot(&fly);
my_flight.set_fly(&shoot);
fly.press();
shoot.press();
return 0;
}