Advertisement
Guest User

dirty_hacks.h

a guest
Mar 31st, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. // adapted from http://bloglitb.blogspot.de/2011/12/access-to-private-members-safer.html
  2.  
  3. namespace Rob {
  4. template<typename Tag, typename Tag::type M>
  5. struct Rob {
  6.   friend typename Tag::type get(Tag) {
  7.     return M;
  8.   }
  9. };
  10. } // namespace Rob
  11.  
  12. #define CREATE_ACCESS_TAG(unique_id, class_name, member_name, member_type) \
  13. namespace Rob {                                                            \
  14. struct unique_id {                                                         \
  15.   using member_type_ = member_type;                                        \
  16.   using type = member_type_ class_name::*;                                 \
  17.   friend type get(unique_id);                                              \
  18. };                                                                         \
  19. template struct Rob<unique_id, &class_name::member_name>;                  \
  20. } // namespace Rob
  21.  
  22. #define ACCESS(unique_id, object) ((object).*get(Rob::unique_id()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement