Member на другой экземпляр объекта
От: licch Россия  
Дата: 12.08.11 04:55
Оценка:
Есть следующий код:
struct A {
    int i;
    char c;

    template<typename Caller>
    void en(Caller & caller)
    {
        caller.f(i); // (1)
        caller.f(c); // (2)
    }
};

struct SomeCaller {
    SomeCaller(A & a_) : a(a_) {}
    template<typename T>
    void f(/* ??? */ & val)
    {
        // Здесь нужно получить доступ на соответственный member из объекта a
    }
    A & a;
};

int main()
{
    A a1, a2;
    // ...
    a1.en(SomeCaller(a2)); // (3)
    return 0;
}

При вызове (3), в функции f нужно как-то получить доступ к соответственным (1-2) полям объекта a2. То есть при вызове (1), val в f должно ссылаться на a2.i, при вызове (2) — на a2.c . Можно ли как-нибудь это сделать, не меняя en в структуре A?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.