#include <iostream>
using namespace std;
class object_c {
public:
int x,
y;
object_c(int X, int Y) : x (X), y (Y){}
};
class calc_c {
private:
object_c *ship,
*targ,
*ref;
public:
int pos2 (object_c A, object_c B) {
return (A.x-B.x)*(A.x-B.x);
}
int ship_pos (object_c A){return pos2(*ship, A);} //these
int ship_targ_pos () {return pos2(*ship, *targ);}//should be
int ship_ref_pos () {return pos2(*ship, *ref);} //replaced
void set_ship (object_c *A){ship = A;}
void set_targ (object_c *A){targ = A;}
void set_ref (object_c *A){ref = A;}
} calc;
int main() {
object_c Ship(0,1), Targ(10,11), Ref(20,21); //notice capitalization
calc.set_ship(&Ship);
calc.set_targ(&Targ);
calc.set_ref (&Ref);
cout << calc.pos2 (Ship, Targ)<< endl;//should
cout << calc.ship_pos (Targ) << endl;//be
cout << calc.ship_targ_pos () << endl;//identical
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3Mgb2JqZWN0X2MgewoKcHVibGljOgogICAgaW50CQkJeCwKCQkJCXk7CgoJb2JqZWN0X2MoaW50IFgsIGludCBZKSA6IHggKFgpLCB5IChZKXt9Cn07CgpjbGFzcyBjYWxjX2Mgewpwcml2YXRlOgoJb2JqZWN0X2MJKnNoaXAsCgkJCQkqdGFyZywKCQkJCSpyZWY7CgpwdWJsaWM6CglpbnQJCQlwb3MyCQkJKG9iamVjdF9jIEEsIG9iamVjdF9jIEIpIHsKCQlyZXR1cm4gKEEueC1CLngpKihBLngtQi54KTsKCX0KCWludAkJCXNoaXBfcG9zCQkob2JqZWN0X2MgQSl7cmV0dXJuIHBvczIoKnNoaXAsIEEpO30JLy90aGVzZQoJaW50CQkJc2hpcF90YXJnX3BvcwkoKQkJCXtyZXR1cm4gcG9zMigqc2hpcCwgKnRhcmcpO30vL3Nob3VsZCBiZQoJaW50CQkJc2hpcF9yZWZfcG9zCSgpCQkJe3JldHVybiBwb3MyKCpzaGlwLCAqcmVmKTt9IC8vcmVwbGFjZWQKCgl2b2lkCQlzZXRfc2hpcAkJKG9iamVjdF9jICpBKXtzaGlwID0gQTt9Cgl2b2lkCQlzZXRfdGFyZwkJKG9iamVjdF9jICpBKXt0YXJnID0gQTt9Cgl2b2lkCQlzZXRfcmVmCQkJKG9iamVjdF9jICpBKXtyZWYgPSBBO30KfSBjYWxjOwoKaW50IG1haW4oKSB7CgoJb2JqZWN0X2MgU2hpcCgwLDEpLCBUYXJnKDEwLDExKSwgUmVmKDIwLDIxKTsJLy9ub3RpY2UgY2FwaXRhbGl6YXRpb24KCgljYWxjLnNldF9zaGlwKCZTaGlwKTsKCWNhbGMuc2V0X3RhcmcoJlRhcmcpOwoJY2FsYy5zZXRfcmVmICgmUmVmKTsKCgljb3V0IDw8IGNhbGMucG9zMgkJCShTaGlwLCBUYXJnKTw8IGVuZGw7Ly9zaG91bGQKCWNvdXQgPDwgY2FsYy5zaGlwX3BvcwkJKFRhcmcpIAkJPDwgZW5kbDsvL2JlCgljb3V0IDw8IGNhbGMuc2hpcF90YXJnX3BvcwkoKQkJCTw8IGVuZGw7Ly9pZGVudGljYWwKCglyZXR1cm4gMDsKfQo=