Ошибка поиска имени в VS2010 - PullRequest
1 голос
/ 08 декабря 2010

Я почти уверен, что это ошибка в 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 ""1004 *

g ++ и Comeau отлично компилируются.

Я что-то упустил?

1 Ответ

2 голосов
/ 08 декабря 2010

Visual C ++ обеспокоен проблемой алмаза - член экземпляра с именем "s" неоднозначен из-за наследования в форме ромба.Но здесь он должен быть скрыт локальным параметром с именем "s", так что в этом коде нет ничего противозаконного.Он должен скомпилироваться без ошибок, если в вашей среде не установлено что-то странное, чтобы Visual C ++ жаловался на скрытые имена переменных.

...