fork download
  1. #include <iostream>
  2. #include <stdexcept>
  3. using namespace std;
  4.  
  5. class Farm
  6. {
  7. public:
  8. int cows = 1;
  9. int chickens = 2;
  10. int mules = 3;
  11. };
  12.  
  13. int Farm::* getMemberPtr(int whichMember)
  14. {
  15. switch (whichMember)
  16. {
  17. case 0: return &Farm::chickens;
  18. case 1: return &Farm::cows;
  19. case 2: return &Farm::mules;
  20. }
  21. throw invalid_argument("");
  22. }
  23.  
  24. void count_animals(int Farm::*member)
  25. {
  26. Farm animal_farm;
  27. cout << animal_farm.*member;
  28. }
  29.  
  30. int main()
  31. {
  32. int animals_to_count = 0;
  33. int Farm::* member = getMemberPtr(animals_to_count);
  34. count_animals(member);
  35. return 0;
  36. }
Success #stdin #stdout 0s 5496KB
stdin
Standard input is empty
stdout
2