10 Stimmen

Warum führt der Compiler keine Typkonvertierung durch?

Betrachten Sie den folgenden Code.

#include <iostream>
#include <string>

struct SimpleStruct
{
    operator std::string () { return value; }
    std::string value;
};

int main ()
{
    std::string s;    // An empty string.
    SimpleStruct x;   // x.value constructed as an empty string.

    bool less = s < x; // Error here.
    return 0;
}

Dieser Code lässt sich weder mit g++ noch mit Microsoft Visual C++ kompilieren. Der von den Compilern ausgegebene Fehlerbericht lautet no match for operator '<' in 's < x' . Die Frage ist, warum konvertiert der Compiler nicht einfach die SimpleStruct x a string nach den gegebenen operator string () und verwenden Sie dann operator < ( string, string ) ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X