在这种情况下,
啊
#include "B.h"
class A{
private:
static int n;
friend void B::setN(int _n);
};
A.cpp
#include "A.h"
int A::n = 0;
B.h
class B{
public:
static void setN(int _n);
};
B.cpp
#include "B.h"
#include "A.h"
void B::setN(int _n) { A::n = _n; }
IntelliSense:成员“A :: n”(在“A.h”声明)无法访问 .
但如果我将 friend void B::setN(int _n); 更正为 friend class B; ,则没有错误 .
为什么我不能用这种方式?
我希望只有静态成员函数可以访问 .
2 回答
错过了分号
它只导致 IntelliSense Error ,而不是编译错误 .