Can I compose pointers to member

c++, composition, member-pointers

Solution

The use of sub-class is confusing here, since generally sub-class is used for inheritance, so let us talk about a data member: `sub_unit` is a data member of `Unit`.

And what you are asking for is not possible, `Unit::*` can only represent an offset in either `Unit` itself or one of its base-classes:

struct SubUnit { int value; };

struct Unit: SubUnit {};

int main() { int Unit::* p = &Unit::value; }

Problem

I'd like to compose member pointers. Basically I have a main class with different member. How do I create a member pointer for the main class that would point to a member of a member of that class. I hope the code below is explains what I'm trying to do: ``` struct SubUnit { int value; }; struct Unit { SubUnit sub_unit; }; void Test() { SubUnit Unit::* ptr1 = &Unit::sub_unit; // WORKING int Unit::* ptr2 = &Unit::sub_unit::value; // NOT WORKING ! } ```

Original source

Related problems