IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Erreur C2061 sous VS 2010


Sujet :

Visual C++

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut Erreur C2061 sous VS 2010
    Bonjour à tous.

    Je travaille actuellement sur un gros programme donc difficile de mettre les sources ivi. Néanmoins vos idées d'ordre général seront les bienvenues.
    Je travaille sous VS2010.
    Actuellement, le programme se compose uniquement de fichiers .h. Les .cpp existent mais ne contiennent ques les .h correspondant.
    J'ai environ 300 erreurs de compilation et lorsque je regarde de plus près je retrouve sans cesse l'erreur C2061 (erreur de syntaxe) sur toujours la même classe A. Cette erreur apparaît toujours sur une ligne faisant référence à un pointeur sur la classe A.
    J'ai bien la forward reference en entête : class A.

    Dans tout le programme je n'ai qu'une seule fois #include "a.h".
    Je pense évidemment à des dépendances circulaires.
    Aussi pour debugger, j'ai totalement vidé la description de ma classe A dans a.h afin qu'elle ne fasse référence à aucune autre classe.
    Le problème subsiste.
    Peut il s'agir d'un autre problème ?

    D'autre part, dans un fichier .h, j'ai noté une double forward reference à la classe A :

    class A;
    class B;
    class C;
    ...
    class A;
    ...

    J'en ai supprimé une mais le problème subsiste.
    Si vous aviez quelques idées ...

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Je poursuis mes recherches et voici ce que je viens de trouver.
    Lorsque je déplace la forward référence (qui habituellement est placée juste après les #include) dans la classe juste avant la ligne incluant le pointeur vers la classe A, il n'y a plus d'erreur de compilation.
    Pourquoi ?

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Note: Il ne s'agit pas de "forward reference" mais de "forward declaration".

    Évidemment, il faut les mettre avant les déclarations de pointeurs. Avant tout le reste, en fait. C'est un peu le principe...

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Ok mais pourquoi si je la mets juste après les include ça ne passe pas et si je la mets dans la classe juste avant la ligne incluant le pointeur cela passe très bien à la compil ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Difficile à expliquer sans un code minimal qui reproduit le problème.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    La première approche qui ne passe pas à la compilation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include test.h
     
    class A;
     
    ...
     
    class T
    {
    public:
    int capture(A* entree); // ligne générant l'erreur C2061
    ...
    };

    La seconde qui passe très bien :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include test.h
     
     
    ...
     
    class T
    {
    public:
     
    class A;
     
    int capture(A* entree); // OK
    ...
    };

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Ce code ne reproduit pas le problème sur mon Visual 2010 (j'ai du enlever le #include test.h et les ..., par contre).

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 42
    Points
    42
    Par défaut
    Je suis sous qt Creator. Ceci pourrait il expliquer le pb ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2014, 15h09
  2. Erreur C2275: norme c99 sous VC 2010?
    Par darkman19320 dans le forum Visual C++
    Réponses: 3
    Dernier message: 02/02/2012, 13h20
  3. Réponses: 0
    Dernier message: 19/12/2011, 09h09
  4. [Erreur BDE sous XP] Ouverture du module de base de données
    Par touhami dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/05/2008, 14h09
  5. [MySQL] erreur avec sous-requête
    Par Piou2fois dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2006, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo