private typedef виден в производном классе
У меня небольшая проблема с компилятором (VC++ 6.0). На мой взгляд, такой код должен вызывать ошибку;
class Base
{
private:
typedef int T;
};
class Derived : private Base // Here the Base class can be inherited publicly as well. It does not play any role
{
public:
T z;
};
int main()
{
Derived obj;
obj.z = 7;
return 0;
}
Этот фрагмент кода компилируется и запускается под VC++ 6.0 без каких-либо проблем.
Что касается SW-дизайна, этот код не идеален. Ни один из членов класса не должен быть объявлен открытым. Но меня этот аспект не интересует.
Моя проблема с typedef. Typedef объявляется в базовом классе как private. С моей точки зрения понимания C++, этот typedef не должен быть виден ни производному классу, ни функции main (). Но оба прекрасно их видят.
Есть ли у кого-нибудь объяснение этому феномену?Заранее спасибо
Necip