Re[6]: Люди, вопрос про стандартный STL или BOOST
От: Gadsky Россия  
Дата: 05.01.03 07:23
Оценка: 26 (4)
Здравствуйте, Stas Chistyakov, Вы писали:

SC>Создать на каждую переменную по функтору — элементарно, собственно весь вопрос был про более менее универсальный, т.е. переменная член должна была бы фиксиковаться в конструкторе функтора



#include <cassert>

template <typename Class, typename FieldClass>
class Field {
public:
    typedef FieldClass Class::*FieldOffset;
            
private:
    FieldOffset fieldOffset;

public:
    FieldClass &operator () (Class &value) { return value.*fieldOffset; }
    Field(FieldOffset fieldOffset): fieldOffset(fieldOffset) {}
};

struct Test {
    int a;
    char *b;
};

void main() {
    Field<Test, int> aField(&Test::a);
    Field<Test, char *> bField(&Test::b);

    Test test;
    test.a = 1;
    char *temp = "bebe";
    test.b = temp;

    assert(aField(test) == 1);
    assert(bField(test) == temp);
}


Или я чего-то не понял?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.