The first line in the ParseInput fx is part of my previous troubleshooting before resorting to the forums, along with the cout statement in main. When I run the program(after commenting out the strinput.compare(printshapes) control path, the part giving me the errors, of course), the cout statement in main prints the same addresses as the cout statement in ParseInput().
In the event that it turns out to be relevant, the GetNewTri/Rec/Squ functions are defined as public static member functions of their classes, and look like.