【奇怪】派生类子类对基类访问权限解决方法
【奇怪】派生类子类对基类访问权限
派生类的子类如何取得对基类protected成员的访问权限?
譬如下面一段代码:
VC6编译器显示无法找到SubBase (error C2504: 'SubBase' : base class undefined)
Dev C++编译运行正常
难道这个问题在C++规范中没有规定, 而是依赖编译器的问题?
我正在使用VC6, 然而我希望将SubBase的接口隐藏, 请问有什么方法可以实现?
------解决方案--------------------
Base::SubBase
------解决方案--------------------
VC6这样的编译器我觉得你可以换掉了。VC6很不标准的。在Vs2008下编译通过。
------解决方案--------------------
我这里是VC2008,可以编译运行。
------解决方案--------------------
那你就换window下的gcc啦。
派生类的子类如何取得对基类protected成员的访问权限?
譬如下面一段代码:
- C/C++ code
#include<stdio.h> #include<stdlib.h> class Base { protected: class SubBase {}; }; class Derived : public Base { public: Derived() { SubDerived * test = new SubDerived; delete test; } private: class SubDerived : public SubBase {}; }; int main(int argc, char* argv[]) { Derived * test = new Derived; printf("Hello World!\n"); system("pause"); delete test; return 0; }
VC6编译器显示无法找到SubBase (error C2504: 'SubBase' : base class undefined)
Dev C++编译运行正常
难道这个问题在C++规范中没有规定, 而是依赖编译器的问题?
我正在使用VC6, 然而我希望将SubBase的接口隐藏, 请问有什么方法可以实现?
------解决方案--------------------
Base::SubBase
------解决方案--------------------
VC6这样的编译器我觉得你可以换掉了。VC6很不标准的。在Vs2008下编译通过。
------解决方案--------------------
我这里是VC2008,可以编译运行。
------解决方案--------------------
那你就换window下的gcc啦。