Foo foo;
int gg;
};
int main()
{
Bar bar;
Foo *f = &bar;
f->ff = 1;
return f->ff;
}
это уб или нет?
Гугли standard layout types, некрасиво, но UB вроде в этом нет
В C это точно абсолютно легально. § 6.7.2.1 13 Within a structure object, the non-bit-field members and the units in which bit-fields reside have addresses that increase in the order in which they are declared. A pointer to a structure object, suitably converted, points to its initial member (or if that member is a bit-field, then to the unit in which it resides), and vice versa. There may be unnamed padding within a structure object, but not at its beginning. В плюсах для по крайней мере standard layout types должно быть тоже.
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
если использовать наследование и каст к предку, будет красивее и не будет возникать вопросов. Да и применяется повсеместно, при передаче по интерфейсу
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
тогда можно всё 👍 Главное чтобы тебе было больше 40 лет, тогда твоё мнение авторитетно
Обсуждают сегодня