Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- struct A {
- int a_;
- int b_;
- double c_;
- float d_;
- std::string e_;
- };
- struct B {
- int (A::*ref_);
- int value(const A& a) {
- return (a.*(this->ref_));
- }
- };
- template<typename TMember>
- struct AccessorHolder {
- TMember (A::*ref_);
- const TMember& value(const A& a) const {
- return (a.*(this->ref_));
- }
- };
- int main() {
- B b{&A::a_};
- B c{&A::b_};
- A aa{5, 6, 7.0, 8.0, "karl lagerfeld"};
- std::cerr << b.value(aa) << ", " << c.value(aa) << std::endl;
- AccessorHolder<float> d{&A::d_};
- AccessorHolder<std::string> e{&A::e_};
- std::cerr << d.value(aa) << ", " << e.value(aa) << std::endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement