
Hi, I'd like to know if there is interest in developing a small library for inclusion in boost to emulate properties, something like: struct A{ void SetVar(int a){ cerr << "set " << a << endl; } int GetVar() const{ cerr << "get" << endl; return 0; } BOOST_PROPERTY(A,int,Var,SetVar,GetVar); }; A a; a.Var=3; //calls SetVar here's a proof-of-concept implementation which works with gcc 3.4 and intel cc: #define BOOST_PROPERTY(ClassT,T,name,setter,getter) \ struct _##name##_offset; \ property<T,ClassT,_##name##_offset,&ClassT::setter,&ClassT::getter> name; \ struct _##name##_offset{ \ size_t operator()() const{ \ return (size_t) &((ClassT *)0)->name; \ } \ } template<typename T,typename ClassT,typename offset,void (ClassT::*setter)(T),T (ClassT::*getter)() const> class property{ public: property &operator=(T const &t){ unsigned int temp=(unsigned int)this; temp-=offset()(); ClassT *this_=(ClassT *)temp; (this_->*setter)(t); return *this; } }; Regards, -- Stefan Strasser