2010-12-08 6 views
1

Je suis sûr qu'il est un bug dans VS 2010, mais il est toujours une bonne idée de vérifier sur le SONom bug de recherche dans VS2010

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; 
} 

erreur » VS gives- C2385: accès ambigu de l « » ".

g ++ et Comeau compilent bien.

Ai-je raté quelque chose?

+1

MSVC++ 2008 (édition professionnelle) et 2010 se compilent également. Vérifié sur MSVC++ 2010 Ultimate –

+0

@Prasoon Saurav: Mon VS2010 (Express Edition :) donne une erreur. – Chubsdad

+0

Je pensais que toutes les éditions VS2010 utilisent la même version du compilateur. –

Répondre

2

Visual C++ est inquiet au sujet du diamant problème- l'élément d'instance nommée « s » est ambiguë en raison de l'héritage en forme de losange. Mais ici, il devrait être masqué par le paramètre local nommé "s", il n'y a donc rien d'illégal dans ce code. Il devrait compiler proprement, sauf si vous avez quelque chose de bizarre dans votre environnement pour que Visual C++ se plaigne des noms de variables ombrés.

+0

Oui, je suis d'accord. Je pense que c'est l'Expression Edition !!, basée sur le commentaire de Prasoon – Chubsdad