I think that you must change the definition of default argument:
Shader(char* vertexFile, char* fragmentFile, const char* geometryFile = "")
This maybe requires corresponding changes to other functions. It is probably a good idea to use const if geometryFile is a read-only string. Check if const can be added to other parameters too.
By the way, instead of 'if(geometryFile != "")', which is not always correct, you can write 'if(*geometryFile)' or 'if(strlen(geometryFile) != 0)'.