В этой ситуацииКак получить доступ к частной статической переменной в статической функции-члене другого класса?
хиджры
#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); - класс друга B;, у него нет ошибок.
Почему я не могу использовать этот способ?
Надеюсь, что доступна только функция статического члена.
Код, похоже, работает на GCC 4.7. –
Я думаю, что если метод setN является общедоступным и статическим, сделав его другом с A, вы разрешите публичный доступ к закрытым членам A. Что произойдет, если вы сделаете setN private? – VAndrei
Я работал с VS2013, но да, я тестировал его сейчас на GCC, и он работает. Я думаю, что мне не хватает чего-то другого. –