The best you can get using C++ is a map with the name as the key and the object as your value. The biggest problem I see is creating a heterogeneous data structure. If all of your classes are derived from one base class then the solution is simple.
Code:
#include <map>
#include <string>
class Avian;
class Chicken: public Avian;
std::string handles[] = {
"Chick", "Duck", "Green", "Hawk", "Jab", "peacock", "Red"
};
std::map<std::string, Avian*> birdie;
birdie[handles[0]] = new Chicken;
...
birdie["Chick"]->chickmf();
If you do not have a common base class for all of the classes then the solution is more difficult, or at least more error prone.
Code:
std::map<std::string, void*> thingie;
thingie[handles[0]] = new Chicken;
...
((Chicken*)thingie["Chick"])->chickmf();
In my experience, something like this is an indication of awkward program design. Perhaps you should look at your overall structure and verify that what you want is actually the best solution.