Jak zapobiec niejawnej konwersji z tablicy char na bool
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, nawet jeśli tablica znaków jest przekazywana w miejscu abool
jest oczekiwany.
Czy jest możliwe, aby ten kod nie powiódł się kompilacją? (Preferowane rozwiązanie C ++ 03, ponieważ kompilator w moim miejscu pracy jest starożytny.)
Sprawdziłem następujące pytania pokrewne na temat StackOverflow, ale nie rozwiązują one całkowicie tego problemu.Zapobieganie niejawnej konwersji w C ++, Dlaczego kompilator wybiera bool over string dla niejawnego typecastu L ""?