Find the answer to your Linux question:
Results 1 to 2 of 2
String.h has the following operator overloading function which is an user defined //declaration int operator==(char *ch) //definition int String::operator==(char *ch) { if (strcmp(_text, ch) == 0) { return TRUE; } ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Feb 2013
    Posts
    1

    Exclamation ISO C++ ambiguous error


    String.h has the following operator overloading function which is an user defined
    //declaration
    int operator==(char *ch)
    //definition
    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

  2. #2
    Just Joined!
    Join Date
    Sep 2007
    Posts
    19
    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.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •