struct Foo {
void setBar(bool bar_) { bar = bar_; }
bool bar;
};
int main() {
Foo f;
f.setBar("true");
}
Der obige Code zu Typumwandlung erfolgreich kompiliert aufgrund Bool, obwohl ein char-Array übergeben wird, wo ein bool
erwartet wird.Wie implizite Konvertierung von char-Array verhindern
Kann dieser Code nicht kompiliert werden? (C++ 03 Lösung bevorzugt, da der Compiler an meinem Arbeitsplatz alt ist.)
Ich habe die folgenden verwandten Fragen zu StackOverflow angeschaut, aber sie adressieren dieses Problem nicht ganz. Preventing implicit conversion in C++, Why does the compiler choose bool over string for implicit typecast of L""?
Sie sind ** ** nicht vorbei eine 'std :: string'. Sie übergeben ein 'const char [5]'. Dies wird zu einem 'const char *', das in 'bool' umgewandelt wird. – juanchopanza
@juanchopanza Ja, tut mir leid, das habe ich nach dem Posten bemerkt. Ich habe die Frage jetzt aktualisiert. –