Если член static
и public
(или если B
или функция-член в B
для доступа к переменной имеет значение friend
из A
), тогда да .
В любом другом случае нет.
Причина в том, что B не имеет отношения is-a к A, поэтому вам нужен либо объект (ссылка или указатель), либо все, что вы пытаетесь получить, должно быть static
.
EDIT:
Просто для забавы, можно сделать так, чтобы выглядел так, как если бы это было возможно, если дать B отношение has-a к A:
class A
{
int a;
public:
struct B;
};
class A::B : private A
{
void foo() { A::a = 1; }
};
Но, конечно, я обманываю здесь ... это работает, потому что (и только потому, что) у каждого B
есть A
, вы только не видите его сразу.