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

C++ Discussion :

const - non const


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut const - non const
    Bonjour,

    J'ai un petit soucis de C++...

    Ma classe h�rite d'une classe abstraite. Certaines m�thodes sont donc obligatoirement const. Dans ces m�thodes je souhaite apeller une m�thode private � moi... seulement cette derniere ne passe pas car elle n'est pas const, et donc le compilo refuse.

    Je ne peux pas passer ma m�thode en const elle fait au moins 200 lignes �a sera trop p�nible ...

    Y'a t il une feinte ? une id�e ?

    Merci.

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par d�faut
    Ma classe h�rite d'une classe abstraite. Certaines m�thodes sont donc obligatoirement const.
    hein? pourquoi?

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    @nikko34 : Sans doute poss�de-t-elle des m�thodes virtuelles const que Ange_blond veut red�finir...

    @Ange_blond : Si ta m�thode peut �tre const, alors elle doit l'�tre, je ne vois pas trop d'autre solution. De plus, quand une m�thode fait 200 lignes, c'est souvent un signe qu'elle devrait �tre fragment�e un peu...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut
    Heuu faut partir du principe que c'est comme �a.
    C'est du code d�j� existant, je cherche juste � faire un test et donc je ne vais pas r��crire tout le code juste pour tester �a...

    Si je ne les met pas en const :

    Error : impossible d'instancier une classe abstraite
    osgGA::MatrixManipulator::getInverseMatrix(void) const' : est abstrait

    (sachant que ma classe herite de osgGA::MatrixManipulator)

    donc pas tellement le choix... retour au probleme original...

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Au pire, la solution la plus sale est de faire de la m�thode const un wrapper qui fait un const_cast sur this pour appeler la m�thode non-const, mais c'est vraiment d�gueu...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre �m�rite
    Avatar de Ange_blond
    Homme Profil pro
    Ing�nieur d�veloppement en 3D temps r�el
    Inscrit en
    Mars 2007
    Messages
    902
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 40
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement en 3D temps r�el
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 902
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    Au pire, la solution la plus sale est de faire de la m�thode const un wrapper qui fait un const_cast sur this pour appeler la m�thode non-const, mais c'est vraiment d�gueu...


    ce n'est que pour tester un effet... et voir si oui ou non une modif pourrait changer qqch... donc dans tous les cas �a sera retravaill� proprement par la suite... donc je susi preneur des trucs meme pas nets...

    Comment je peux faire �a M�dinoc ?

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Code C++ sale : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TypeDeRetour TaClasse::getInverseMatrix(void) const
    {
    	return const_cast<TaClasse*>(this)->getInverseMatrix();
    }
     
    //Ta fonction de 200 lignes
    TypeDeRetour TaClasse::getInverseMatrix(void)
    {
    }
    Mais je rappelle, c'est vraiment sale. La seule chose plus sale que �a aurait �t� d'utiliser un cast C-style au lieu du const_cast.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. multi_index_container et non const
    Par mister3957 dans le forum Biblioth�ques
    R�ponses: 0
    Dernier message: 27/10/2013, 14h51
  2. R�ponses: 27
    Dernier message: 16/05/2009, 14h53
  3. Hack const --> non const ?
    Par befalimpertinent dans le forum C++
    R�ponses: 15
    Dernier message: 06/03/2008, 15h11
  4. R�ponses: 7
    Dernier message: 30/08/2007, 14h17
  5. R�ponses: 18
    Dernier message: 19/10/2006, 12h02

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