朋友定义不适用于gcc4.9

时间:2016-07-05 07:13:31

标签: c++ gcc friend dynamic-library

我需要创建一个动态库:

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是私有的。我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用friend class ::FriendClass; 通过这样做,您告诉编译器查看class FriendClass定义的全局命名空间,而不是当前命名空间。

也可以使用:

my_namespace::MyLib* my_lib = get_my_lib_somehow();