私有typedef在派生类中可见

时间:2009-08-31 07:14:32

标签: 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;
}

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

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

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

有人对此现象有解释吗?

提前致谢

Necip

1 个答案:

答案 0 :(得分:7)

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