Доступ к вложенным членам класса на C ++ 11
В C ++ 11 я пытаюсь получить доступ к переменной-члену включающего класса из вложенного класса следующим образом:
struct Enclosing {
int a;
struct Nested {
int f() {
return a;
}
};
};
Даже это не компилируется с использованием g ++ 4.7.2 с -std = c ++ 11, создавая сообщения об ошибках этой формы:
error: invalid use of non-static data member 'Enclosing::a'
Насколько я понимаю, C ++ 11 рассматривает вложенный класс как член класса, так что предположительно вложенный класс может получить доступ к любому другому члену включающего класса. Я сделал что-то неправильно? Заранее спасибо.
Обновить:
Хотя на мой вопрос, похоже, есть ответ ниже, я не уверен, что он будет помечен как дубликат.
Мне известны дискуссии о взаимосвязи между вложенными классами и вложенными классами до появления стандарта C ++ 11, после долгих поисков, прежде чем отправлять вопрос.
Предыдущие соответствующие обсуждения, подобные этому, приводят некоторые «обновления» в C ++ 11, например,Доступность вложенных классов C ++
Но было не очень ясно, по крайней мере из ответов, которые я прочитал, в полной мере, что C ++ 11 "отличается" от более старых версий по этому вопросу.
Технически решение моего вопроса существует в более старых темах, таких какВложенный класс 'доступ к закрытому классу' члены личных данныхЭто факт, на который я должен был указать. Но я не пришел ни с каким таким ответом, который помещает C ++ 11 в контекст; по крайней мере, я не думаю, что мой вопрос можно считать «дубликатом» вопроса, заданного до стандарта C ++ 11.