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

MFC Discussion :

erreur C2084 : comment y rem�dier ?


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut erreur C2084 : comment y rem�dier ?
    Bonjour � tous !
    Voil�, je fais appel � la macro IMPLEMENT_DYNCREATE2 � plusieurs reprises dans un fichier cpp de cette mani�re :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    IMPLEMENT_DYNCREATE2(CidsChap03KPage6::Cids03K6Grd2, Cids03K6Grd2, CidsBrowserView)
    Les deux premiers param�tres sont des Grid, des grilles quoi.
    L'appel � la macro fonctionne (de m�me que la macro) puisque pour le premier Grid, je n'ai aucun souci.

    Et lorsque je compile, voil� mes erreurs :
    cs03kpg6.cpp(1303) : error C2084: la fonction 'CRuntimeClass *_GetBaseClass(void)' a d�j� un corps
    cs03kpg6.cpp(582)*: voir la d�finition pr�c�dente de '_GetBaseClass'
    cs03kpg6.cpp(1303) : error C3861: '_GetBaseClass': identificateur introuvable, m�me avec une recherche qui d�pend de l'argument

    Je suis s�r que les 2 erreurs sont li�es.
    Pour info, _GetBaseClass est une classe utilis�e dans la macro (celle-ci a �t� red�finie dans un header).
    Je me suis renseign� un peu sur cette erreur C2084, et apparemment il n'y a pas de r�el moyen de la r�soudre, seulement quelques astuces pour la contourner (le cast, en fait).
    Je veux bien caster, mais je vois pas trop comment.

    Sinon, je me demandais s'il existait un moyen de renommer temporairement une classe (pas de refactoring svp), pour tester un peu.

    Je pr�cise que mon projet consiste � migrer mon programme de VS6 � VS2003, d'o� l'apparition de cette erreur.

  2. #2
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut Des nouvelles du front
    Non, ne vous bousculez pas pour me r�pondre, y aura de la place pour tout le monde !
    Bon, tr�ve de plaisanterie s�rieuse, j'ai essay� de renommer _GetBaseClass (qui en fait est une m�thode (c'�tait d'une logique imparable mais des fois je suis tr����������s lent � la comprenelle) mais on s'en fout puisque...) �a marche pas. Ca, c'est fait.

    Bon, je vous avouerais qu'on s'en fout pas tant que �a que �a soit une m�thode, puisqu'elle a un type (int), et que donc je devrais pouvoir caster.

    Dites, si je mets une photo de fille sexy, quelqu'un consentirait � me r�pondre, ne serait-ce que pour commenter la photo ? Je me sentirais un peu soutenu au moins...

  3. #3
    mat.M
    Invit�(e)
    Par d�faut
    Quel est le but du projet ?
    Pourquoi toucher aux macros IMPLEMENT_DYNCREATE2 ?
    Ce sont les assistants qui les g�n�re.
    Pour les migrations de VC6 � vs2005 Farscape a fait un tutorial je crois
    Sinon renommer une classe c'est absolument impossible.
    On la d�finit une bonne fois pour toute dans le code

  4. #4
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut Re: Des nouvelles du front
    Citation Envoy� par LMA
    Non, ne vous bousculez pas pour me r�pondre, y aura de la place pour tout le monde ! [...] Dites, si je mets une photo de fille sexy, quelqu'un consentirait � me r�pondre, ne serait-ce que pour commenter la photo ? Je me sentirais un peu soutenu au moins...
    Les membres qui fr�quentent les forums, ainsi que l'�quipe de mod�ration, r�pondent b�n�volement aux questions. Il n'y a pas d'exigence � avoir sur la rapidit� des r�ponses, chacun fait ce qu'il peut (pour l'�quipe de mod�ration) et ce qu'il veut (pour les membres). Et si personne n'a la r�ponse pour l'instant on ne va pas poster des messages pour dire "d�sol� j'ai pas la r�ponse"

    Pour ce que j'ai pu trouver sur le pb, le compilo n'accepte plus les sp�cialisations multiples de template d'o� le message d'erreur de d�finitions multiples :
    http://msdn2.microsoft.com/en-us/library/xs4hat8z.aspx

  5. #5
    mat.M
    Invit�(e)
    Par d�faut Re: erreur C2084 : comment y rem�dier ?
    Citation Envoy� par LMA
    Et lorsque je compile, voil� mes erreurs :
    cs03kpg6.cpp(1303) : error C2084: la fonction 'CRuntimeClass *_GetBaseClass(void)' a d�j� un corps
    cs03kpg6.cpp(582)*: voir la d�finition pr�c�dente de '_GetBaseClass'
    cs03kpg6.cpp(1303) : error C3861: '_GetBaseClass': identificateur introuvable, m�me avec une recherche qui d�pend de l'argument
    On ne peut pas acc�der � GetBaseClass car cela doit �tre une m�thode d�clar�e en private d'une classe donc inaccessible.
    D�sol� de r�pondre � la vol�e pas trop le temps.
    Il y a le code source des MFC

  6. #6
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    Citation Envoy� par mat.M
    Pour les migrations de VC6 � vs2005 Farscape a fait un tutorial je crois
    http://farscape.developpez.com/

  7. #7
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut Re: Des nouvelles du front
    Wahou !!! Que de r�ponses !!! Merci � tous ! Apparemment les filles sexe �a marche
    Pour une fois que je suis pas l�, vous postez tous pour me r�pondre, �a sent le complot.

    Mon projet consiste � migrer un logiciel propri�taire (environ 1500 fichiers cpp, et autant de .h) de VS6 � VS2003 (et non 2005 mat.M). Alors �videmment je ne connais presque rien du code puisque je n'ai pas fait ce logiciel. Ils ont eu besoin de modifier la macro, je ne sais pas pourquoi, et plus personne dans l'entreprise ne le sait maintenant, d�sol�.


    Citation Envoy� par bigboomshakala
    Les membres qui fr�quentent les forums, ainsi que l'�quipe de mod�ration, r�pondent b�n�volement aux questions. Il n'y a pas d'exigence � avoir sur la rapidit� des r�ponses, chacun fait ce qu'il peut (pour l'�quipe de mod�ration) et ce qu'il veut (pour les membres). Et si personne n'a la r�ponse pour l'instant on ne va pas poster des messages pour dire "d�sol� j'ai pas la r�ponse"
    En fait je disais cela parce que j'ai laiss� un message il y a quelques jours (concernant une autre erreur) et on ne m'a jamais r�pondu. Mais pas de souci, je ne disais pas cela m�chamment, sinon �a se serait vu

    Citation Envoy� par bigboomshakala
    Pour ce que j'ai pu trouver sur le pb, le compilo n'accepte plus les sp�cialisations multiples de template d'o� le message d'erreur de d�finitions multiples :
    http://msdn2.microsoft.com/en-us/library/xs4hat8z.aspx
    Oui, j'avais d�j� vu qu'on ne pouvait r�soudre cette erreur, j'ai tent� quelques trucs mais (�videmment) en vain, alors je voulais savoir si vous aviez une id�e pour contourner le probl�me, la derni�re solution quoi.

    Encore merci � tous pour vos r�ponses, je pense que je vais tenter de pas avoir � appeler cette macro, on verra si je m'en sors.

  8. #8
    mat.M
    Invit�(e)
    Par d�faut Re: Des nouvelles du front
    Citation Envoy� par LMA
    Wahou !!! Que de r�ponses !!! Merci � tous ! Apparemment les filles sexe �a marche
    On n'a rien vu encore....

    On ne sait tjs pas quel est le but du projet

  9. #9
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut Re: Des nouvelles du front
    Citation Envoy� par mat.M
    On n'a rien vu encore....
    C'est l'art de ne rien montrer pour avoir des info

    Citation Envoy� par mat.M
    On ne sait tjs pas quel est le but du projet
    Le but de mon projet, c'est de migrer un logiciel propri�taire de VS6 � VS2003. Si tu veux savoir ce que fait ce logiciel, �a va te para�tre chiant : il permet de faire des calculs concernant des transformateurs (nombre de radiateurs, imp�dance, devis, etc...). La macro, je sais pas pourquoi elle est appel�e, je sais pas pourquoi ils l'ont modifi�e, je sais juste qu'elle pose des probl�mes et qu'elle fait bien c****.

  10. #10
    mat.M
    Invit�(e)
    Par d�faut Re: Des nouvelles du front
    Citation Envoy� par LMA
    Si tu veux savoir ce que fait ce logiciel, �a va te para�tre chiant : il permet de faire des calculs concernant des transformateurs (nombre de radiateurs, imp�dance, devis, etc...). La macro, je sais pas pourquoi elle est appel�e, je sais pas pourquoi ils l'ont modifi�e, je sais juste qu'elle pose des probl�mes et qu'elle fait bien c****.
    Pas du tout .
    C'est passionnant les calculs sur les transfos et imp�dances , condensateurs ( y-a-til des condos ? ) !


    Ce genre de macro on n'y touche pas du tout elles sont g�n�r�es par les assistants de VC++
    En fait je me suis mal exprim�; ce n'est pas le but du projet mais le pourquoi du comment.
    C'est l'int�gration d'un composant grille ?

  11. #11
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut
    Oui, c'est pour inclure des grilles.
    En fait, quand il y a une seule grille � ins�rer, tout va bien, mais d�s qu'il y en a deux (ou plus bien s�r), vu que la macro est d�j� d�finie, il m'affiche l'erreur.
    C'est dommage, je suis en alternance alors je peux pas montrer la macro cette semaine, mais je la laisserais peut-�tre � mon retour en entreprise, si �a peut t'aider.

  12. #12
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut
    Bon, comme promis, voil� la macro, en esp�rant que cela puisse aider (m�me si, � vrai dire, j'en doute) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #define IMPLEMENT_DYNCREATE2(full_class_name, class_name, base_class_name) \
    	CObject* PASCAL full_class_name::CreateObject() \
    		{ return new full_class_name; } \
    	CRuntimeClass* PASCAL _GetBaseClass() \
    		{ return RUNTIME_CLASS(base_class_name); } \
    	const AFX_DATADEF CRuntimeClass full_class_name::class##class_name = { \
    		#full_class_name, sizeof(class full_class_name), 0xFFFF, full_class_name::CreateObject, \
    			&_GetBaseClass, NULL }; \
    	CRuntimeClass* full_class_name::GetRuntimeClass() const \
    		{ return RUNTIME_CLASS(class_name); } \
    Et voici un exemple d'appel � cette macro :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    IMPLEMENT_DYNCREATE2(CidsChap03KPage6::Cids03K6Grd2, Cids03K6Grd2, CidsBrowserView)

  13. #13
    LMA
    LMA est d�connect�
    Membre habitu�
    Inscrit en
    F�vrier 2006
    Messages
    11
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 11
    Par d�faut
    Bon, ben finalement j'ai r�ussi � bien contourner le probl�me : je ne passe plus par cette macro, comme �a elle ne me cause plus d'ennuis !
    Merci � tous d'avoir pass� un peu de temps � vouloir m'aider.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 17/10/2011, 14h12
  2. Duplication code css, comment y rem�dier ?
    Par sunshine33 dans le forum Mise en page CSS
    R�ponses: 3
    Dernier message: 26/04/2006, 14h53
  3. [Erreur] SQL1040N: comment proceder ?
    Par FzF dans le forum DB2
    R�ponses: 3
    Dernier message: 12/04/2006, 09h39
  4. [HTML] espace ind�sir� en deux cellule, comment y rem�dier?
    Par samuelMB dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 2
    Dernier message: 07/04/2006, 21h11
  5. Programme figer ? comment y rem�dier
    Par jamesb dans le forum C++Builder
    R�ponses: 6
    Dernier message: 25/11/2004, 20h58

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