【奇怪】派生类子类对基类访问权限
派生类的子类如何取得对基类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啦。