Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // adapted from http://bloglitb.blogspot.de/2011/12/access-to-private-members-safer.html
- namespace Rob {
- template<typename Tag, typename Tag::type M>
- struct Rob {
- friend typename Tag::type get(Tag) {
- return M;
- }
- };
- } // namespace Rob
- #define CREATE_ACCESS_TAG(unique_id, class_name, member_name, member_type) \
- namespace Rob { \
- struct unique_id { \
- using member_type_ = member_type; \
- using type = member_type_ class_name::*; \
- friend type get(unique_id); \
- }; \
- template struct Rob<unique_id, &class_name::member_name>; \
- } // namespace Rob
- #define ACCESS(unique_id, object) ((object).*get(Rob::unique_id()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement