struct Foo {
void setBar(bool bar_) { bar = bar_; }
bool bar;
};
int main() {
Foo f;
f.setBar("true");
}
Powyższy kod kompiluje się pomyślnie z powodu konwersji typu, mimo że tablica znaków jest przekazywana tam, gdzie oczekiwany jest kod bool
.Jak zapobiec niejawnej konwersji z tablicy znaków do bool
Czy można spowodować, że ten kod nie powiedzie się w kompilacji? (Preferowane rozwiązanie C++ 03, ponieważ kompilator w moim miejscu pracy jest starożytny).
Przejrzałem następujące powiązane pytania dotyczące StackOverflow, ale nie rozwiązały one tego problemu. Preventing implicit conversion in C++, Why does the compiler choose bool over string for implicit typecast of L""?
Jesteś ** nie ** przepuszczanie 'std :: string'. Przekazujesz 'const char [5]'. To rozpada się na "const char *", który jest konwertowany na 'bool'. – juanchopanza
@juanchopanza Tak, przepraszam, zdałem sobie sprawę, że po wysłaniu. Zaktualizowałem teraz pytanie. –