我很确定这是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编译好。
我错过了什么吗?
答案 0 :(得分:2)
Visual C ++担心钻石问题 - 名为“s”的实例成员由于钻石形状的继承而不明确。但是在这里,它应该被名为“s”的本地参数遮蔽,所以这个代码没有任何违法行为。它应该干净地编译,除非你的环境中有一些奇怪的东西让Visual C ++抱怨阴影变量名。