Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c++] errore String

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++] errore String

    ciao.
    ho il seguente codice:
    codice:
    bool String::operator==(const std::string &str) const
    {
        return (*this == Step::String(str));
    }
    dove String deriva direttamente da std::wstring e offre alcune altre personalizzazioni.
    il problema è che questa funzione mi da il seguente errore:

    codice:
    1)Errore
    C:\ifc\src\Step\String.cpp(26): error C2679: binary '==' : no operator found which takes a right-hand operand of type 'Step::String' (or there is no acceptable conversion)
    2)Warning
    C:\ifc\src\Step\String.cpp(454): warning C4066: characters beyond first in wide-character constant ignored
    ho provato nelle proprietà del progetto a cambiare il set dei caratteri su unicode ma niente , non riesco proprio a capire cosa sia che causa il problema.

    questo è per il warning:
    codice:
     unsigned int code = fromHex(s[i]) * (1 << 4) + fromHex(s[i + 1]);
                    if (code >= 0x80 && code <= 0x9F)
                    {
                        if (code == 0x83)
                            code = 0xC9;
                        else if (code == 0x89)
                            code = L'â';
                        else if (code == 0x8D)
                            code = L'ç';
                        else if (code == 0x8E)
                            code = L'é';
                        else if (code == 0x8F)
                            code = L'è';
                        else if (code == 0x90)
                            code = L'ê';
                        else if (code == 0x99)
                            code = L'ô';

  2. #2
    Hai definito l'operator== per confrontare due oggetti Step::String?
    Tra parentesi, non bisognerebbe ereditare da classi della STL, dato che non hanno distruttore virtuale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    si , è definito cosi' nel .h :
    /**
    * compares to a latin-1 (ISO 8859-1) encoded representation
    * \param str the string to compare too
    * \return success
    */
    virtual bool operator==(const std::string &str) const;

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    dopo aver ripulito tutto dai wstring sostituendo string compila correttamente , solo che da il seguente errore qui:

    codice:
    Step::String str = "gg";
    if(str == "gg")//errore
    {}
    se creo un overload dell' operatore == con char* come argomento funziona , solo che vorrei capire bene la cosa , sono 5 anni che programmo in c++ ed ho ancora dei dubbi su queste cose, !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.