Сообщение Re[2]: Как такое написать по Сиплюсплюсному? от 22.03.2025 20:03
Изменено 22.03.2025 20:04 rg45
Re[2]: Как такое написать по Сиплюсплюсному?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, kov_serg, Вы писали:
_>>Как такое написать по Сиплюсплюсному что бы без UB
BFE>
BFE>
BFE>
А потом так хоба:
Хлопотно это, автореференсные объекты. И некрасиво.
BFE>Здравствуйте, kov_serg, Вы писали:
_>>Как такое написать по Сиплюсплюсному что бы без UB
BFE>
| Скрытый текст | |
_>> | |
BFE>
BFE>#include <stdio.h>
BFE>struct I1
BFE>{
BFE> virtual void show()=0;
BFE>};
BFE>struct I2
BFE>{
BFE> virtual void print()=0;
BFE>};
BFE>struct A : I1,I2
BFE>{
BFE> int x[3];
BFE> void show() { printf("show x0=%d\n",x[0]); }
BFE> void print() { printf("print x0=%d\n",x[0]); }
BFE> I1* i1 = { this };
BFE> I2* i2 = { this };
BFE>};
BFE>void fn(I1* i) { i->show(); }
BFE>void fn(I2* i) { i->print(); }
BFE>int main(int argc, char **argv) {
BFE> A a[1];
a->>x[0]=123;
BFE> fn(a->i1);
BFE> fn(a->i2);
BFE> return 0;
BFE>}
BFE>BFE>
А потом так хоба:
A b = a[0];
b.x[0] = 456;
fn(b.i1); // show x0=123
fn(b.i2); // print x0=123Хлопотно это, автореференсные объекты. И некрасиво.
Re[2]: Как такое написать по Сиплюсплюсному?
Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, kov_serg, Вы писали:
_>>Как такое написать по Сиплюсплюсному что бы без UB
BFE>
BFE>
BFE>
А потом так хоба:
http://coliru.stacked-crooked.com/a/9771187b1c11b3b6
Хлопотно это, автореференсные объекты. И некрасиво.
BFE>Здравствуйте, kov_serg, Вы писали:
_>>Как такое написать по Сиплюсплюсному что бы без UB
BFE>
| Скрытый текст | |
_>> | |
BFE>
BFE>#include <stdio.h>
BFE>struct I1
BFE>{
BFE> virtual void show()=0;
BFE>};
BFE>struct I2
BFE>{
BFE> virtual void print()=0;
BFE>};
BFE>struct A : I1,I2
BFE>{
BFE> int x[3];
BFE> void show() { printf("show x0=%d\n",x[0]); }
BFE> void print() { printf("print x0=%d\n",x[0]); }
BFE> I1* i1 = { this };
BFE> I2* i2 = { this };
BFE>};
BFE>void fn(I1* i) { i->show(); }
BFE>void fn(I2* i) { i->print(); }
BFE>int main(int argc, char **argv) {
BFE> A a[1];
a->>x[0]=123;
BFE> fn(a->i1);
BFE> fn(a->i2);
BFE> return 0;
BFE>}
BFE>BFE>
А потом так хоба:
http://coliru.stacked-crooked.com/a/9771187b1c11b3b6
A b = a[0];
b.x[0] = 456;
fn(b.i1); // show x0=123
fn(b.i2); // print x0=123Хлопотно это, автореференсные объекты. И некрасиво.