String.h has the following operator overloading function which is an user defined //declaration int operator==(char *ch) //definition Code: int String::operator==(char *ch) { if (strcmp(_text, ch) == 0) { return TRUE; } else { return FALSE; } } The above operator overloading function is called in the file Sample.c The g++ compiler throws the following error. String.h:67: note: candidate 1: int String:perator==(char*) Sample.c:230: note: candidate 2: operator==(const char*, const char*) <built-in> Sample.c:249: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second: i have pasted the caller code (sample.c) 230 if (String(StrInputBuffer.part_string(4)) == ":86:") { //statement } 249 else if (String(StrInputBuffer.part_string(1)) == ":") { } I used the below gnu command to compile the source file >g++ -c -g Sample.c -o sample compiler version: Target: x86_64-redhat-linux gcc version 4.1.2 20080704 (Red Hat 4.1.2-54) Could you please help me to resolve the issue? Thanks for looking into this