在 C++ 中与名称空间中的函数成为朋友时出错

Error with befriending a function in a namespace in C++

我试过在命名空间中添加一个函数,但我不知道为什么会出现错误:

Error C2653 'a': is not a class or namespace name

我试了很多次,我认为这不是我的错误,但请看一下:

class plpl
{
private:
    int m;
public:
    plpl()
        : m(3) {}

    friend void a::abc();
};

namespace a {
    void abc();
    void abc()
    {
        plpl p;
        std::cout << p.m << std::endl;
    }
}

我用的是Visual Studio2019,不知如何是好,求助

根据评论中的建议,您需要转发声明命名空间a和函数abc,如下所示。

#include <iostream>

namespace a {
    void abc();
}

class plpl {
private:
    int m;
public:
    plpl() : m(3) {}

    friend void a::abc();
};

namespace a {
    void abc() {
        plpl p;
        std::cout << p.m << std::endl;
    }
}