在 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;
}
}
我试过在命名空间中添加一个函数,但我不知道为什么会出现错误:
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;
}
}