Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   ISO C++ ambiguous error for assignment operator overloading (http://www.go4expert.com/forums/iso-cpp-ambiguous-error-assignment-t29468/)

dany2704 4Feb2013 23:47

ISO C++ ambiguous error for assignment operator overloading
 
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::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:")
{
//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

DRK 11Feb2013 14:55

Re: ISO C++ ambiguous error for assignment operator overloading
 
Try to overload or modify this operator definition with const char *ch parameter.


All times are GMT +5.5. The time now is 00:36.