Закрытый модификатор C ++ игнорируется во вложенной анонимной структуре
Следующий пример кода прекрасно компилируется в Visual C ++:
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
Но почему? Я'я ожидал ошибку компилятора, потому чтоprivateData
член должен быть недоступен для функции main, так какдолжно бытьprivate
как его контейнерконтейнер Я знаю, что безымянные структуры не являются частью официального C ++, но этот дизайн является оригинальным.
Кстати ямы также пытались изменитьprivate
вprotected
а такжеstruct
вunion
Похоже, что компилятор отказывается учитывать модификаторы доступа для анонимных структур и объединений, которые вложены в другую анонимную структуру или объединение.
Может кто-нибудь объяснить эту функцию?