#include <stdio.h>
#include <stddef.h>
struct cls
{
public:
cls(char c, double d, int i) : c(c), d(d), i(i) {}
private:
char c;
double d;
int i;
};
struct copy
{
public:
copy(char c, double d, int i);
public:
char c;
double d;
int i;
};
int main(void)
{
cls x('1', 2.5, 3);
printf
(
"%c %f %d\n",
*(char*)((void*)&x + offsetof(copy, c)),
*(double*)((void*)&x + offsetof(copy, d)),
*(int*)((void*)&x + offsetof(copy, i))
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRkZWYuaD4KCnN0cnVjdCBjbHMKewogIHB1YmxpYzoKICAgIGNscyhjaGFyIGMsIGRvdWJsZSBkLCBpbnQgaSkgOiBjKGMpLCBkKGQpLCBpKGkpIHt9CiAgcHJpdmF0ZToKICAgICAgY2hhciBjOwogICAgICBkb3VibGUgZDsKICAgICAgaW50IGk7Cn07CgpzdHJ1Y3QgY29weQp7CiAgcHVibGljOgogICAgY29weShjaGFyIGMsIGRvdWJsZSBkLCBpbnQgaSk7CiAgcHVibGljOgogICAgICBjaGFyIGM7CiAgICAgIGRvdWJsZSBkOwogICAgICBpbnQgaTsKfTsKCmludCBtYWluKHZvaWQpCnsKICBjbHMgeCgnMScsIDIuNSwgMyk7CiAgcHJpbnRmCiAgKAogIAkiJWMgJWYgJWRcbiIsIAogICAgKihjaGFyKikoKHZvaWQqKSZ4ICsgb2Zmc2V0b2YoY29weSwgYykpLAogICAgKihkb3VibGUqKSgodm9pZCopJnggKyBvZmZzZXRvZihjb3B5LCBkKSksCiAgICAqKGludCopKCh2b2lkKikmeCArIG9mZnNldG9mKGNvcHksIGkpKQogICk7CiAgcmV0dXJuIDA7Cn0=