Re: Ключевое слово для доступа к объемлющему классу из вложе
От: graniar  
Дата: 08.11.23 23:11
Оценка:
Я на C делаю так:


#define GetAggregateByMember(Aggregate,MemberName,MemberLink) \
    ((Aggregate*)(((size_t)(MemberLink))-((size_t)&((Aggregate*)(size_t)0)->MemberName)))


например:


struct B{
    int side;
    B* peer;
};

struct A{
    B b[2];
    A(){
        b[0].side=0;
        b[1].side=1;
    }
};

B* pb;
//...

A* a1 = GetAggregateByMember(A,b[pb->side],pb);
Отредактировано 08.11.2023 23:12 graniar . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.