It looks like your Copy
and Concat
functions each take two parameters, yet you pass them both a single parameter. If you want to copy them into a String object, your code should look more like:
String Copy(char* orig) { // Same copy logic you have, // except copy into "*this" }