Mic*_*zek 10 c++ visual-studio-2003 token-name-resolution class-hierarchy
我对Visual Studio 2003有一个奇怪的例子.出于某些合理的原因,我有以下层次结构:
class A {};
class B : public A {
public:
class A {};
};
class C : public B::A {};
Run Code Online (Sandbox Code Playgroud)
也就是说,我有一个内部类与外部类的父类同名.当C尝试继承时B::A,Visual Studio认为我指的是父类A,而不是内部的嵌套类B.GCC似乎按照我的预期解决了内部类版本
这是一个Visual Studio 2003错误,还是我做错了?是否有解决方法(除了升级Visual Studio)?
这看起来像是Visual C++ 2003中的一个错误.使用Visual C++ 2012,B::A正确命名嵌套类A,而不是基类A.
是的,这看起来像是 VS2003 的错误。解决方法很简单 - 使用 typedef,它的工作方式如下:
class A { public: int x; };
class B : public A { public: class A { public: int y; }; };
typedef B::A BA;
class C: public BA {};
void f()
{
C cc;
cc.y = 0;
}
Run Code Online (Sandbox Code Playgroud)