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 :

truc.h [Error C2086] 'wxTextCtrl *truc::Force_val' : redefinition


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut truc.h [Error C2086] 'wxTextCtrl *truc::Force_val' : redefinition
    Bonjour,

    je suis sur une reprise de code C++, pour créer une DLL.
    L'EDI est wxdevC++ et la compilateur VC 2005.

    je ne comprends pas d'ou vient cett erreur qui me parait insensée, et mes recherches ont été vaines jusqu'ici.

    en clair : mon fichier wxform me génère du code, qui refuse de compiler pour les motifs suivants :

    pour plusieurs éléments du form, j'ai une erreur liée à leur redéfinition, telle que celle-ci :
    [...]\truc.h [Error C2086] 'wxTextCtrl *truc::Force_val' : redefinition
    En effet, quand je regarde truc.h, les attributs en question sont définis à la fois dans la partie private et dans la partie public.

    Comme c'est du code généré automatiquement, je ne peux pas le modifier à la main, je me dis qu'il doit y avoir une raison à cette redéfiniton, et je voudrais savoir que faire pour que le compilateur accepte ces redéfinitions, qui amha ne le regardent pas !

    Bref, auriez vous une idée, car je déséspère de trouver une solution seule !
    merci!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    ces redéfinitions, qui amha ne le regardent pas !
    Elle est pas male celle-là. Le compilateur doit vérifier si un code peux accéder un attribut en fonction du contexte et il ne devrait pas s'inquiété d'avoir un attribut à la fois private et public ?

    Le problème est en amont, soit c'est un bug dans l'outil de génération, soit c'est une mauvaise utilisation de l'outil de génération, soit on lui à fait un petit bébé dans le dos en modifiant son code après lui.

    En clair, votre .h est à corrigé, peu importe la méthode.

    A moins, que vous n'ayez pas fait attention aux defines et, dans se cas, c'est vous qui avez peut-être loupé une constante de compilation.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Effectivement, plusieurs variables membres avec le même nom dans une classe ne sont pas autorisées par le langage même si leur visibilité est différente. Comment désignerais-tu l'une plutôt que l'autre ?
    Comme dit par bacelar, soit tu as une directive de compilation à positionner (les déclarations sont-elles encadrées de #ifdef) ou revoir ton outil de génération.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Hi, merci pour les réponses.

    Vous avez raison, deux variables du mm nom, heureusement que ça alerte le compilo.

    Bon, cela-dit ça m'étonne que wxdevcpp fasse une telle chose...

    Dans l'état, je ne peux pas modifier le .h comme ça, car dès que je reconstruit le projet, il est regénéré dans sa forme initiale.

    Je vais faire un tour sur le site de l'outil, et vous tiens au courant.
    Si vous avez d'autres pistes, je les prend car je suis toujours bloqué avec cette bêtise

    ++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 13
    Par défaut
    Bon ok, une partie du code du .h est modifiable.

    Les variables ont été redéfinies à la main dans la zone public, afin d'y avoir accès depuis l'extérieur, ce qui est 'illégal' (je me demande comment cette chose a pu être compilée auparavant ducoup, mais peu importe).

    Si mes souvenirs sont exacts, pour accéder à des membres private, il faut que je créée des fonctions d'accès ... Ces fonctions, seront private ou public ?

    Piouff, il faut que je me replonge dans mes cours !

    merci encore pour votre aide !

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par stilgar_karas Voir le message
    Les variables ont été redéfinies à la main dans la zone public, afin d'y avoir accès depuis l'extérieur, ce qui est 'illégal' (je me demande comment cette chose a pu être compilée auparavant ducoup, mais peu importe).
    En plus d'être illégal, ça relève du travail de sappe !
    Citation Envoyé par stilgar_karas Voir le message
    Si mes souvenirs sont exacts, pour accéder à des membres private, il faut que je créée des fonctions d'accès ... Ces fonctions, seront private ou public ?
    Là, il faut choisir : soit les variables sont privées et alors il n'est pas intéressant d'avoir des getters et des setters ; soit elles ont des getter et des setter ... alors autant les rendre complètement publique !
    En général, quand on ajoute des getter et des setters sur les membres d'une classe, c'est que celle-ci a un problème de conception.

Discussions similaires

  1. trucs et astuces XML
    Par grishka dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 09/09/2004, 13h56
  2. Trucs pas claire
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 09/07/2003, 21h10

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