【发布时间】:2011-01-13 12:20:25
【问题描述】:
我想在全局命名空间中定义一个二元运算符。运营商 适用于在另一个命名空间中定义的类,操作员应该得到 访问该类的私有成员。我的问题是我没有 知道如何在类定义中使全局运算符成为朋友时对其进行作用域。
我尝试了类似的方法:
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;
...
}
编译器 (g++ 4.4) 不知道如何处理它。好像这条线
friend A ::operator * ()
被评估为类似(伪代码)
(A::operator)
而不是
(A) (::operator)
如果我在运算符的声明中省略 :: 编译工作,但运算符在命名空间 NAME 中,而不是在全局命名空间中。
在这种情况下如何限定全局命名空间?
【问题讨论】:
标签: c++ namespaces scope friend