【发布时间】:2011-07-28 21:52:42
【问题描述】:
我正在阅读 C++ Primer,作者说,
"如果一个类是在命名空间中定义的,那么 未申报的朋友 函数在同一个命名空间中声明:
namespace A {
class C {
public:
friend void f(const C&); // makes f a member of namespace A
};
}
不是说我不用在命名空间内再次声明函数 f() 了吗?
当我简单地将命名空间之外的函数 f() 定义为
void
A::f(const C& obj)
{
std::cout << "f(const C&) " << std::endl;
}
我从 g++ 4.5 得到错误说,
FriendDeclarations1.cpp:40:23: error: ‘void A::f(const A::C&)’ should have been declared inside ‘A’
谁能告诉我作者是什么意思?
【问题讨论】:
标签: c++ namespaces friend