VS2010 中的名称查找错误
我很确定这是 VS 2010 中的一个错误,但检查 SO
struct A{
static int s;
};
struct B{
static int s;
};
struct C : A, B{
void fn(short s){ // Ambiguous access of 's' here!!!
s = 2;
}
};
int A::s;
int B::s;
int main(){
C c;
}
VS 给出的错误总是一个好主意 - “错误 C2385:'s' 的访问不明确”。
g++ 和 Comeau 编译良好。
我错过了什么吗?
I am pretty sure it is a bug in VS 2010, but it's always a good idea to check on SO
struct A{
static int s;
};
struct B{
static int s;
};
struct C : A, B{
void fn(short s){ // Ambiguous access of 's' here!!!
s = 2;
}
};
int A::s;
int B::s;
int main(){
C c;
}
VS gives- "error C2385: ambiguous access of 's'".
g++ and Comeau compile fine.
Am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Visual C++担心菱形问题——名为“s”的实例成员由于菱形继承而具有二义性。但在这里,它应该被名为“s”的本地参数遮蔽,因此这段代码没有任何非法之处。它应该干净地编译,除非您在环境中设置了一些奇怪的东西以使 Visual C++ 抱怨隐藏的变量名称。
Visual C++ is worried about the diamond problem- the instance member named "s" is ambiguous due to diamond-shaped inheritance. But here, it should be shadowed by the local parameter named "s", so there's nothing illegal about this code. It should compile cleanly, unless you have something weird set in your environment to make Visual C++ complain about shadowed variable names.