2009-09-02 27 views
19

tôi có thể chuyển tiếp khai báo một chức năng trong một không gian tên bằng cách làm này:Có cách nào ngắn hơn để chuyển tiếp khai báo một lớp trong không gian tên không?

void myNamespace::doThing(); 

tương đương với:

namespace myNamespace 
{ 
    void doThing(); 
} 

Để chuyển tiếp khai báo một lớp trong một không gian tên:

namespace myNamespace 
{ 
    class myClass; 
} 

Có cách nào ngắn hơn để thực hiện việc này không? Tôi đã suy nghĩ điều gì đó dọc theo các dòng:

class myNamespace::myClass; 
+1

lưu tôi đau đầu - cảm ơn cho câu hỏi! –

Trả lời

27

Không, tuy nhiên với một chút format

namespace myNamespace { class myClass; } 

không phải là nhiều tồi tệ hơn

class myNamespace::myClass; 
10

Tôi đã muốn làm điều tương tự trước đây - không được phép. Thành viên không gian tên phải được khai báo trong namespace-body. Chúng chỉ có thể được "gọi" bằng cách sử dụng toán tử phân giải phạm vi.

Xem 3.3.5 "Phạm vi không gian tên" trong tiêu chuẩn.

Thực thể khai báo trong không gian tên được gọi là thành viên của không gian tên và tên được giới thiệu bởi các khai báo này vào vùng khai báo của không gian tên được gọi là tên thành viên của không gian tên.

Một thành viên namespace cũng có thể được gọi sau :: operator độ phân giải phạm vi (5.1) áp dụng cho các tên của namespace của nó hoặc tên của một không gian tên mà đề cử namespace của thành viên trong một chỉ thị sử dụng;

Các vấn đề liên quan