在这种情况下,如何访问另一个类的静态成员函数中的私有静态变量?
A.H
#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; }
智能感知:成员“A :: n”(在“A.h”处声明)不可访问已发生。
但是,如果我更正朋友void B :: setN(int _n);至朋友类B;,它没有错误。
为什么我不能用这种方式?
我希望只有静态成员函数是可访问的。
该代码似乎在GCC 4.7上工作。 – 2014-10-10 10:20:33
我认为,如果setN方法是公共的并且是静态的,那么通过使它与A成为朋友,您将允许公共访问A的私有成员。如果将setN私有化,会发生什么? – VAndrei 2014-10-10 10:37:56
我与VS2013一起工作,但是,我现在在GCC上测试了它,并且它工作正常。我想我错过了别的东西。 – 2014-10-10 10:38:37