私有typedef在派生类中可见

Nec*_*cip 2 c++ inheritance 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;
}
Run Code Online (Sandbox Code Playgroud)

此代码段在VC++ 6.0下编译和运行,没有任何问题.

关于SW-Design,这段代码并不完美.不应将任何类成员声明为公共成员.但我对这方面不感兴趣.

我的问题是typedef.typedef在Base类中声明为private.从我对C++的理解来看,这个typedef对Derived类或main()函数都不可见.但两人都完美地看待他们.

有没有人对这种现象有解释?

提前致谢

Necip

APr*_*mer 7

此行为在VC++ 6.0中不一致,在定义Derived :: z时应该会出错.(如果你有商业理由使用它,除了VC++ 6.0之外还有其他选择,这是旧的).