ISO C++ ambiguous error
String.h has the following operator overloading function which is an user defined
int operator==(char *ch)
int String::operator==(char *ch)
if (strcmp(_text, ch) == 0)
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::operator==(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:")
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
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
I am not very good at C++. But looking at this thread "stackoverflow.com/questions/2613645/c-addition-overload-ambiguity" it seems like some type casting might be needed. Its better you read that thread. As I said my understanding of Cpp is very bad.