#include <iostream>
#include <stdexcept>
using namespace std;

class Farm
{
public:
    int cows = 1;
    int chickens = 2;
    int mules = 3;
};

int Farm::* getMemberPtr(int whichMember)
{
    switch (whichMember)
    {
        case 0: return &Farm::chickens;
        case 1: return &Farm::cows;
        case 2: return &Farm::mules;
    }
	throw invalid_argument("");
}

void count_animals(int Farm::*member)
{
    Farm animal_farm;
    cout << animal_farm.*member;
}

int main()
{
	int animals_to_count = 0;
	int Farm::* member = getMemberPtr(animals_to_count);
    count_animals(member);
    return 0;
}