我的编译器 (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下编译运行没有任何问题。
关于软件设计,这段代码并不完美。不应将类成员中的任何一个成员声明为公共(public)的。但是我对这方面不感兴趣。
我的问题是 typedef。 typedef 在基类中声明为私有(private)。从我对 C++ 的理解来看,这个 typedef 必须对派生类或 main() 函数不可见。但两者都完美地看待它们。
有人对这种现象有解释吗?
提前致谢
尼吉普
最佳答案
此行为在 VC++6.0 中是不一致的,您应该在定义 Derived::z 时遇到错误。 (除非您有商业原因需要使用它,否则还有其他选择在技术上比 旧 的 VC++6.0 更可取)。
关于c++ - 在派生类中可见的私有(private) typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1356204/