Puoi fare così:
codice:
/*

$ g++ --version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
$ g++ -Wall -ansi -pedantic -Wextra -Wconversion main.cpp 
$ ./a.out 
eStatusBad
eStatusGood
eStatusUnknown

*/

#include <iostream>

typedef enum{
	eStatusBad = 0,
	eStatusGood,
	eStatusUnknown
} EStatus;

const char * StatusToString (const EStatus theStatus){
	const char * kVect []={
		"eStatusBad",
		"eStatusGood",
		"eStatusUnknown"
	};
	return kVect [static_cast <int> (theStatus)];
}

int main (void){
	std::cout << StatusToString (eStatusBad) << std::endl;
	std::cout << StatusToString (eStatusGood) << std::endl;
	std::cout << StatusToString (eStatusUnknown) << std::endl;
	return 0;
}
ma chiaro, devi mantenere sincronizzate la enum e la StatusToString.