Бьерн Страуструп.
Язык программирования С++
138
Имя класса-члена (вложенного класса) можно использовать вне описания объемлющего его класса так
же, как имя любого другого члена:
class X {
struct M1 { int m; };
public:
struct M2 { int m; };
M1
f(M2);
};
void f()
{ M1 a;
// ошибка: имя `M1' вне области видимости
M2
b;
// ошибка: имя `M1' вне области видимости
X::M1
c;
// ошибка: X::M1 частный член
X::M2
d; //
нормально
}
Отметим, что контроль доступа происходит и для имен вложенных классов.
В функции-члене область видимости класса начинается после уточнения X:: и простирается до конца
описания функции. Например:
M1 X::f(M2 a) // ошибка: имя `M1' вне области видимости
{ /* ... */ }
X::M1 X::f(M2 a) // нормально
{ /* ... */ }
X::M1 X::f(X::M2 a) // нормально, но третье уточнение X:: излишне
{ /* ... */ }
Достарыңызбен бөлісу: