I am trying to come up with a system that would let me
have a function (getter) for every member of the class
Using macros I can generate a 'get_<membername> function such that
struct my
{
float mem1;
}
would be
struct my
{
float mem1;
static const float& get_mem1( const my& )
{
return my.mem1;
}
};
Now, I would like to store pointer to the get_mem1 function in
a staticaly declared std::map
Using boost/function.hpp
I can declare a type for float
typedef boost::function
tFget__float ;
and then
I can store it in, for example std::set
The problem is that if I have another function that returns
a different data type (something other than float, for example
std::string)
I get a compilation error when trying to insert that function pointer
into
the set. There is a check implemented, I think, via the template system
that prevents compiler from making copies of one ponter type to another
-- even though they only differ by return type.
When I just do the assignment
tFget__float x= <function returning float>
or to function returning std::string -- I do not get the error.
So I would like to ask -- if there is a good way to store function
pointers
in a static array
(I later on plan to iterate ove the set of function pointers and get the
value of each data member into a stream )
thanks in advance,
Vlad
--
V S P
toreason@fastmail.fm
--
http://www.fastmail.fm - The professional email service