// MyClass.h
namespace MyNamespace {
static const double GasConstant = 1.987;
class MyClass
{
// constructors, methods, etc.
};
}
trước đây tôi đã GasConstant khai báo trong tờ khai MyClass (và có một định nghĩa riêng biệt trong tập tin nguồn từ C++ không hỗ trợ const
khởi của các loại phi không thể thiếu). Tuy nhiên tôi cần phải truy cập nó từ các tập tin khác và cũng về mặt logic nó có vẻ như nó nên cư trú ở cấp độ không gian tên.tác động gì const tĩnh có trên một thành viên namespace
Câu hỏi của tôi là, static const
có ảnh hưởng gì trong trường hợp này? Rõ ràng const
có nghĩa là tôi không thể gán giá trị mới cho GasConstant, nhưng một thành viên tĩnh tại không gian tên có nghĩa là gì. Điều này tương tự như tĩnh ở phạm vi tập tin, nơi mà các thành viên không thể truy cập bên ngoài của đơn vị?
Đây có phải là tệp tiêu đề (.h) hoặc trong tệp triển khai (.cpp) ??? – AnT
Nó nằm trong tệp tiêu đề (.h). –
Trong C++ không có phạm vi tệp. Chỉ có phạm vi không gian tên trong C++ nếu bạn đang ở bên ngoài các hàm và các lớp. Ngoài ra, nếu bạn đọc trên một số trang mà họ gọi là "toàn cầu", chúng thường có nghĩa là không gian tên chung và các không gian tên khác được bao gồm. 'cplusplus.com' được biết đến với việc sử dụng không chính xác từ" toàn cầu ", ví dụ. Vì vậy, nếu một cái gì đó giải thích hiệu ứng của "tĩnh" trong "phạm vi toàn cầu", chúng thường có nghĩa là hiệu ứng của nó trong phạm vi không gian tên. –