Tôi đang sử dụng khai báo 'using' trong C++ để thêm std :: string và std :: vector vào vùng tên cục bộ (để lưu gõ không cần thiết 'std ::' s).Phạm vi của việc sử dụng "khai báo" trong C++ là gì?
using std::string;
using std::vector;
class Foo { /*...*/ };
Phạm vi trong tuyên bố này là gì? Nếu tôi làm điều này trong một tiêu đề, nó sẽ tiêm các khai báo 'sử dụng' này vào mọi tệp cpp bao gồm tiêu đề?
Chỉ trong trường hợp không rõ câu trả lời ở đây: - ** Không đặt khai báo 'using' (hoặc' using') ở phạm vi tệp trong tệp/tiêu đề bao gồm! ** gây đau đầu cho người dùng tiêu đề. –
Trên thực tế, không đặt khai báo 'using' (chỉ thị fortiori * *) trong tiêu đề ** ở tất cả **, * ngay cả trong không gian tên! * Xem [phạm vi sử dụng khai báo trong một không gian tên] (http://stackoverflow.com/q/6175705/2025416) cho các vấn đề này gây ra. –