我需要创建一个动态库:
mylib.h
class FriendClass;
namespace my_namespace
{
class MyLib
{
friend class FriendClass;
public:
MyLib();
/* public functions */
private:
void function_for_friend_class();
};
} // namespace my_namespace
并在此处使用
friend_function.h
class FriendClass
{
public:
void some_function()
{
MyLib* my_lib = get_my_lib_somehow();
my_lib->function_for_friend_class();
}
};
使用gcc3.4编译,但gcc4.9抱怨function_for_friend_class是私有的。我做错了什么?
答案 0 :(得分:0)
使用friend class ::FriendClass;
通过这样做,您告诉编译器查看class FriendClass
定义的全局命名空间,而不是当前命名空间。
也可以使用:
my_namespace::MyLib* my_lib = get_my_lib_somehow();