Bind members of different classes
- by 7vies
In a C++ program I have two classes (structs) like
struct A
{
int x;
double y;
// other members
};
struct B
{
int x;
double y2;
// other members
};
I'd like to somehow "bind" the corresponding members, e.g. A::x to B::x and A::y to B::y2. By "bind" I mean ability to obtain a reference to the bound variable, for example given a member of class A I could assign it to the value of the corresponding B member.
Once I have such bind, I'd like to build a bind table or something similar which I could iterate over. This would allow, for example, copying the corresponding fields from A a; to B b; like CopyBound(a, b, bind_table);, but probably also doing some other things not limited to Copy interface.
The problem with this bind_table is that I want static typing and the bind_table would have to contain different types in this case. For example, a table of pointers to class members would contain &A::x and &A::y, but they are of different type, so I cannot just put them say into an array.
Any ideas how this can be conveniently implemented, having as much compile-time type checking as possible?