#include <iostream>
using namespace std;
class foo {
int value;
static int static_value;
public:
static void set_value (void *ptr, int val) {
reinterpret_cast<foo*>(ptr)->value = val;
}
int get() const { return value; }
static void set_static_value (void *ptr, int val) {
reinterpret_cast<foo*>(ptr)->static_value = val;
// объект излишен, т.к. меняем статический член
// достаточно static_value = val;
}
static int get_static() { return static_value; }
};
int foo::static_value;
int main() {
foo bar;
foo::set_value (&bar, 123);
cout << bar.get();
foo::set_static_value (&bar, 456);
cout << bar.get_static();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgZm9vIHsKCWludCB2YWx1ZTsKCXN0YXRpYyBpbnQgc3RhdGljX3ZhbHVlOwoJCglwdWJsaWM6CgkKCXN0YXRpYyB2b2lkIHNldF92YWx1ZSAodm9pZCAqcHRyLCBpbnQgdmFsKSB7CgkgIHJlaW50ZXJwcmV0X2Nhc3Q8Zm9vKj4ocHRyKS0+dmFsdWUgPSB2YWw7Cgl9CglpbnQgZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KCglzdGF0aWMgdm9pZCBzZXRfc3RhdGljX3ZhbHVlICh2b2lkICpwdHIsIGludCB2YWwpIHsKCSAgcmVpbnRlcnByZXRfY2FzdDxmb28qPihwdHIpLT5zdGF0aWNfdmFsdWUgPSB2YWw7CgkgIC8vINC+0LHRitC10LrRgiDQuNC30LvQuNGI0LXQvSwg0YIu0LouINC80LXQvdGP0LXQvCDRgdGC0LDRgtC40YfQtdGB0LrQuNC5INGH0LvQtdC9CgkgIC8vINC00L7RgdGC0LDRgtC+0YfQvdC+IHN0YXRpY192YWx1ZSA9IHZhbDsKCX0KCXN0YXRpYyBpbnQgZ2V0X3N0YXRpYygpIHsgcmV0dXJuIHN0YXRpY192YWx1ZTsgfQoKfTsKCmludCBmb286OnN0YXRpY192YWx1ZTsKCmludCBtYWluKCkgewoJCglmb28gYmFyOwoJZm9vOjpzZXRfdmFsdWUgKCZiYXIsIDEyMyk7Cgljb3V0IDw8IGJhci5nZXQoKTsKCglmb286OnNldF9zdGF0aWNfdmFsdWUgKCZiYXIsIDQ1Nik7Cgljb3V0IDw8IGJhci5nZXRfc3RhdGljKCk7CgkKCXJldHVybiAwOwp9