There seems to be no good way to directly convert an enum class to string in C++11.
#include <iostream>
using namespace std;
enum class Fruit { apple, orange, pear };
enum class Color { red, green, orange };
template <typename T> struct Traits;
template<>
struct Traits<Fruit>
{
static string name(int index)
{
switch(index)
{
case 0: return "apple";
case 1: return "orange";
case 2: return "pear";
default: return "unknown";
}
}
};
template<>
struct Traits<Color>
{
static string name(int index)
{
switch(index)
{
case 0: return "red";
case 1: return "green";
case 2: return "orange";
default: return "unknown";
}
}
};
int main()
{
int t = 0; std::cin >> t;
for (int i=0; i!=t; ++i) {
int index1; std::cin >> index1;
int index2; std::cin >> index2;
cout << Traits<Color>::name(index1) << " ";
cout << Traits<Fruit>::name(index2) << "\n";
}
}