Tôi muốn xác định toán tử nhị phân trong không gian tên chung. Toán tử hoạt động trên một lớp được xác định trong một không gian tên khác và toán tử sẽ nhận được quyền truy cập vào các thành viên riêng tư của lớp đó. Vấn đề tôi có là tôi không biết cách phạm vi toán tử toàn cục đó khi biến nó thành một người bạn trong định nghĩa lớp.Làm cách nào để xác định bạn bè trong không gian tên chung trong một không gian tên C++ khác?
tôi đã cố gắng một cái gì đó như:
namespace NAME
{
class A {
public:
friend A ::operator * (double lhs, const A& rhs);
private:
int private_var;
};
}
A operator * (double lhs, const A& rhs)
{
double x = rhs.private_var;
...
}
Trình biên dịch (g ++ 4.4) không biết phải làm gì với nó. Dường như dòng
friend A ::operator *()
được đánh giá là một cái gì đó tương tự (pseudo-code)
(A::operator)
thay vì
(A) (::operator)
Nếu tôi bỏ qua :: trong việc kê khai của điều hành các công việc biên dịch nhưng toán tử sau đó nằm trong không gian tên NAME và không nằm trong không gian tên chung.
Làm cách nào để tôi có thể đủ điều kiện cho không gian tên chung trong tình huống như vậy?
Đó là 3 câu trả lời gần như giống hệt nhau ngay bây giờ :-) – finnw
Chắc chắn, ý bạn là * chỉ * ba :) –