У меня небольшая проблема с моим компилятором (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-Design, этот код не идеален. Ни один из членов класса не должен быть объявлен публичным. Но я не заинтересован в этом аспекте.
Моя проблема с typedef. Typedef объявлен в Базовом классе как закрытый. С моей точки зрения C ++, этот typedef не должен быть видимым ни для класса Derived, ни для функции main (). Но оба прекрасно их видят.
У кого-нибудь есть объяснение этому явлению?
Заранее спасибо
Necip