Advertisement
Guest User

Untitled

a guest
Jul 25th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. struct A {
  4. int a_;
  5. int b_;
  6. double c_;
  7. float d_;
  8. std::string e_;
  9. };
  10.  
  11. struct B {
  12. int (A::*ref_);
  13. int value(const A& a) {
  14. return (a.*(this->ref_));
  15. }
  16. };
  17.  
  18.  
  19. template<typename TMember>
  20. struct AccessorHolder {
  21. TMember (A::*ref_);
  22.  
  23. const TMember& value(const A& a) const {
  24. return (a.*(this->ref_));
  25. }
  26. };
  27.  
  28. int main() {
  29. B b{&A::a_};
  30. B c{&A::b_};
  31. A aa{5, 6, 7.0, 8.0, "karl lagerfeld"};
  32. std::cerr << b.value(aa) << ", " << c.value(aa) << std::endl;
  33.  
  34. AccessorHolder<float> d{&A::d_};
  35. AccessorHolder<std::string> e{&A::e_};
  36. std::cerr << d.value(aa) << ", " << e.value(aa) << std::endl;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement