2009-12-23 28 views
5

Có thể tạo một người bạn không gian tên của một lớp, nói rằng tôi có một vùng tên thử nghiệm đơn vị với nhiều lớp và tôi muốn không gian tên thử nghiệm làm bạn với một lớp để nó có quyền truy cập vào các chi tiết thực hiện riêng tư.Tương tác của không gian tên và bạn bè trong C++?

Trả lời

1

Không, điều này là không thể trong C++. Thành thật mà nói, nó có thiết kế kém.

+1

Tại sao bạn nói đó là thiết kế tồi? Tôi nghĩ rằng nó có thể có thể được thực hiện và có ích. Không có nhiều khác biệt giữa một lớp và không gian tên ngoại trừ con trỏ này. Tôi không thấy lý do tại sao khai báo người bạn không thể làm việc cho một không gian tên, cho phép chức năng thành viên của nó có thể truy cập các chi tiết thực hiện của một lớp. Điều này có thể cho phép các hàm không phải của thành viên liên quan đến một lớp dễ dàng truy cập vào nội bộ của lớp đó. Về cơ bản làm thế nào bạn sẽ làm điều đó ngay bây giờ? Sử dụng một khai báo lớp khi một không gian tên sẽ đủ và bạn bè lớp đó? bạn bè mọi chức năng cần truy cập vào lớp học? – n1ckp

+2

Có rất nhiều sự khác biệt giữa các lớp và không gian tên. –

+5

Một điểm khác biệt là không gian tên không bị đóng: bạn luôn mở nó và bắt đầu thêm mọi thứ vào đó. Vì vậy, tuyên bố một không gian tên một người bạn sẽ có hiệu lực được mở ra cho mình lên hoàn toàn. Không giống như một lớp học, được hoàn thành vào lúc đóng cửa}; –

0

Nếu bạn đang sử dụng .NET, bạn có thể muốn xem InternalsVisibleTo attribute. Dù sao lưu ý rằng điều này làm việc cho toàn bộ hội đồng, không phải cho không gian tên duy nhất.

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