#include <iostream>
#include <map>
class A
{
public:
enum Option { ViewWidth, ViewHeight, DPI, RefreshRate, VsyncMode, Multisampling };
A() : a(0), b(1), c(2), d(3), e(4), f(5)
{
options[ViewWidth] = &a;
options[ViewHeight] = &b;
options[DPI] = &c;
options[RefreshRate] = &d;
options[VsyncMode] = &e;
options[Multisampling] = &f;
}
int getOption(Option op) { return *options[op]; }
private:
int a, b, c, d, e, f; // many variables
std::map<Option, int*> options;
};
int main(int argc, char* argv[])
{
A a;
std::cout << a.getOption(A::DPI) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKY2xhc3MgQQp7CnB1YmxpYzoKICAgIGVudW0gT3B0aW9uIHsgVmlld1dpZHRoLCBWaWV3SGVpZ2h0LCBEUEksIFJlZnJlc2hSYXRlLCBWc3luY01vZGUsIE11bHRpc2FtcGxpbmcgfTsKCUEoKSA6IGEoMCksIGIoMSksIGMoMiksIGQoMyksIGUoNCksIGYoNSkKCXsKCQlvcHRpb25zW1ZpZXdXaWR0aF0gPSAmYTsKCQlvcHRpb25zW1ZpZXdIZWlnaHRdID0gJmI7CgkJb3B0aW9uc1tEUEldID0gJmM7CgkJb3B0aW9uc1tSZWZyZXNoUmF0ZV0gPSAmZDsKCQlvcHRpb25zW1ZzeW5jTW9kZV0gPSAmZTsKCQlvcHRpb25zW011bHRpc2FtcGxpbmddID0gJmY7Cgl9CgoJaW50IGdldE9wdGlvbihPcHRpb24gb3ApIHsgcmV0dXJuICpvcHRpb25zW29wXTsgfQoKcHJpdmF0ZToKCWludCBhLCBiLCBjLCBkLCBlLCBmOyAvLyBtYW55IHZhcmlhYmxlcwoJc3RkOjptYXA8T3B0aW9uLCBpbnQqPiBvcHRpb25zOwp9OwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewoJQSBhOwoJc3RkOjpjb3V0IDw8IGEuZ2V0T3B0aW9uKEE6OkRQSSkgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9