1

我很确定这是 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 编译得很好。

我错过了什么吗?

4

1 回答 1

2

Visual C++ 担心菱形问题——名为“s”的实例成员由于菱形继承而模棱两可。但是在这里,它应该被名为“s”的本地参数所遮蔽,所以这段代码没有任何违法之处。它应该编译干净,除非你在你的环境中设置了一些奇怪的东西来让 Visual C++ 抱怨隐藏的变量名。

于 2010-12-08T05:16:59.503 回答