vendredi 6 avril 2018

Overloaded operator=(bool) is called instead of operator=(string)

I made a lib to parse JSON content with XCode and the main class JSONObject has the operator= overloaded, as you can see:

    class JSONObject
    {   
        //...

    public:

        JSONObject();
        ~JSONObject();

        //...

        void operator=(int);
        void operator=(long);
        void operator=(float);
        void operator=(double);
        void operator=(bool);
        void operator=(std::string);

        //...
    };

The issue here is that at the moment of use operator=(string) the operator=(bool)is invoked:

    JSONObject nItem;
    nItem = "My New Item"; // <--- Here is what the problem is founded.
    innerObj["GlossSeeAlso"]+= nItem;

enter image description here

The workaround that i found to "fix" this problem was specify the string type:

nItem = (string)"My New Item"; //"Fix 1"

nItem = string("My New Item"); //"Fix 2"

The lib and sample was compiled with:

Apple LLVM version 8.0.0 (clang-800.0.38)  

The complete code can be founded here.

I will appreciate any help to understand this issue, why the operator=(bool) is invoked instead of operator=(string).

Aucun commentaire:

Enregistrer un commentaire