2009-07-16 35 views
10

Tôi đã có một kịch bản như sau:Truy cập Namespace Chánh trong C++

class criterion 
{ 
// stuff about criteria... 
}; 
namespace hex { 

    class criterion : public criterion //does not compile 
    {         //This should inherit from the 
    //A hex specific criterion   //criterion class in the global namespace 
    }; 

}; 

Câu hỏi của tôi là - như thế nào một kế thừa từ một lớp trong một namspace đó là phụ huynh của không gian tên khác?

Billy3

Trả lời

7

Bắt đầu với "::"

Ví dụ

class criterion : public ::criterion {}; 
12

Bạn cần phải xác định không gian tên, trong trường hợp này toàn cầu một:

class criterion : public ::criterion 

Note C++ không chỉ định bất kỳ phương tiện nào để điều hướng các không gian tên như thể chúng là một cái cây. Ví dụ: bạn không thể chỉ định không gian tên "cha mẹ" bằng cách sử dụng ".." hoặc bất kỳ cách viết tắt nào khác - bạn phải sử dụng tên của nó.

3

này biên dịch đối với tôi, về cơ bản chỉ hiển thị một cách rõ ràng trong những gì không gian tên lớp cha mẹ là:

class A 
{}; 
namespace B { 
    class A : public ::A 
    {}; 
    namespace C { 
     class A : public B::A 
     {}; 
    } 
}; 
1

Giản cơ bản C++ quy tắc không gian tên là:

  • Bạn có thể truy cập vào bất cứ điều gì trong con đường namespace mẹ mà không chỉ định không gian tên.
  • Bạn có thể truy cập mọi thứ trong đường dẫn không gian tên con bằng cách chỉ định đường dẫn tương đối.
  • Mọi thứ khác yêu cầu thông số kỹ thuật không gian tên đầy đủ.