struct Foo {
void setBar(bool bar_) { bar = bar_; }
bool bar;
};
int main() {
Foo f;
f.setBar("true");
}
Mã trên biên dịch thành công do chuyển đổi loại, mặc dù mảng char được chuyển qua nơi bool
được mong đợi.Làm thế nào để ngăn chặn chuyển đổi ngầm từ mảng char sang bool
Có thể khiến mã này không biên dịch được không? (C++ 03 giải pháp được ưu tiên, vì trình biên dịch tại nơi làm việc của tôi là cũ.)
Tôi đã xem các câu hỏi liên quan sau đây trên StackOverflow, nhưng chúng không giải quyết được vấn đề này. Preventing implicit conversion in C++, Why does the compiler choose bool over string for implicit typecast of L""?
Bạn không ** chuyển một chuỗi 'std ::'. Bạn đang truyền một 'const char [5]'. Nó phân rã thành 'const char *', được chuyển thành 'bool'. – juanchopanza
@juanchopanza Có, xin lỗi tôi đã nhận ra rằng sau khi đăng bài. Tôi đã cập nhật câu hỏi ngay bây giờ. –