using namespace X;
được gọi là một using directive và nó có thể chỉ xuất hiện trong không gian tên và phạm vi chức năng, nhưng không phải là phạm vi lớp học. Vì vậy, những gì bạn đang cố gắng làm là không thể trong C + +. Điều tốt nhất bạn có thể làm là viết chỉ thị sử dụng trong phạm vi không gian tên của lớp đó, điều này có thể không được mong muốn.
Ngày nghĩ thứ hai, tuy nhiên, phân tích lời nói của bạn,
Giả sử có một ++ lớp C. Và có một không gian tên phải là chỉ hiển thị trong lớp học của tôi. Phải làm gì cho điều đó?
Tôi muốn đề xuất điều gì đó như sau, mà tôi không chắc chắn là những gì bạn muốn.
class A
{
public:
void Method1();
void Method2();
void Method3();
private:
class B
{
//public static functions here, instead of namespace-scope
// freestanding functions.
//these functions will be accessible from class A(and its friends, if any)
//because B is private to A
};
};
Nguồn
2012-02-15 15:33:43
Chính xác thì ý bạn là gì? Không gian tên không giống như là riêng tư/công khai. – KillianDS
Một tùy chọn là đặt lớp * bên trong * vùng tên. Nếu nó phụ thuộc quá nhiều vào không gian tên đó, tại sao nó lại ở bên ngoài? –
Có thể trùng lặp của [Tại sao tôi không thể đặt tuyên bố "đang sử dụng" bên trong khai báo lớp?] (Https://stackoverflow.com/questions/2134844/why-cant-i-put-a-using-declaration-inside -a-class-declaration) –