Partage
  • Partager sur Facebook
  • Partager sur Twitter

les pointeurs... initialisations

problème de débutant

Sujet résolu
    29 novembre 2008 à 14:26:36

    Bonjour tout le monde,
    voilà sa fait plusieurs fois que j'ai ce problème, donc je viens ici vous demander comment le résoudre:
    bitTexte = new QBitArray();//définit dans le header
    



    *bitTexte = &repTexte->toAscii();
    

    et
    bitTexte = &repTexte->toAscii();
    

    donnent ça:

    FenPrincipale.cpp:23: attention : prise de l'adresse du temporaire
    FenPrincipale.cpp:23: erreur: no match for «operator=» in «*((FenPrincipale*)this)->FenPrincipale::bitTexte = & QString::toAscii() const()»


    bitTexte = repTexte->toAscii();
    

    donne ça:

    FenPrincipale.cpp:23: erreur: conversion from «QByteArray» to «QBitArray*» is ambiguous
    /usr/include/qt4/QtCore/qbytearray.h:328: note: candidats sont: QByteArray::operator QNoImplicitBoolCast() const <near match>
    /usr/include/qt4/QtCore/qbytearray.h:363: note:                 QByteArray::operator const void*() const <near match>


    alors comment fait on pour initialiser un pointeur?

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      29 novembre 2008 à 14:30:21

      Citation : phast

      bitTexte = new QBitArray();//définit dans le header
      
      Sans parenthèse quand tu ne passe rien (parce que c'est un constructeur, les fonctions en ont besoin même vides) :
      bitTexte = new QBitArray;//définit dans le header
      
      • Partager sur Facebook
      • Partager sur Twitter
        29 novembre 2008 à 14:31:59

        ok merci, mais ça met toujours la même erreur dans le make...
        c'est quel solution qui est bonne?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          29 novembre 2008 à 14:41:20

          (*bitTexte) = repTexte->toAscii();
          
          (je ne suis pas sur de mon coup, mais il existe un operator=(const char * ) avec QByteArray, et un operator const char* () donc pourquoi pas ‽).
          • Partager sur Facebook
          • Partager sur Twitter
            29 novembre 2008 à 14:49:48

            non ça me met:
            FenPrincipale.cpp:23: erreur: no match for «operator=» in «*((FenPrincipale*)this)->FenPrincipale::bitTexte = QString::toAscii() const()»
            /usr/include/qt4/QtCore/qbitarray.h:65: note: candidats sont: QBitArray& QBitArray::operator=(const QBitArray&)

            mais merci qand même...
            et je n'ai pas ce problème juste pour les QBitArray
            personne n'a la solution?

            merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              29 novembre 2008 à 15:47:28

              Salut

              L'operator new sert a construire des pointeurs.
              Or toi tu veut stocker un pointeur dans un objet simple.
              Donc soit tu utilise un pointeur soit tu n'utilise pas new.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                29 novembre 2008 à 15:52:43

                Citation : atoboldom

                [...]

                Ah, oui. J'avais même pas vu (ça m'aurait sans doute choqué avec un code entier/continu, mais là avec juste des bouts...).

                Sinon : bitTexte = new QBitArray(repTexte->toAscii()); .
                • Partager sur Facebook
                • Partager sur Twitter
                  29 novembre 2008 à 17:09:53

                  non ça ne marche toujours pas:

                  bitTexte = new QBitArray(&repTexte->toAscii());
                  

                  ou
                  bitTexte = new QBitArray(repTexte->toAscii());
                  

                  ==
                  /usr/include/qt4/QtCore/qbytearray.h:328: erreur: «QByteArray::operator QNoImplicitBoolCast() const» is private
                  FenPrincipale.cpp:20: erreur: à l'intérieur du contexte



                  Merci quand même
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    29 novembre 2008 à 17:20:02

                    :-° je viens de voir que tu utilise QBitArray et non QByteArray.
                    Dans ce cas, je ne comprend pas ce que tu veux faire.
                    (tu essayes de mettre du texte dans quelque chose qui pourrait être comparé à un tableau de bool.)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 novembre 2008 à 17:21:42

                      C'est pour écrire dans un fichier.

                      edit : a oui je me suis gouré...
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        29 novembre 2008 à 17:37:11

                        Citation : phast

                        edit : a oui je me suis gouré...

                        :lol:
                        Je commençais à m'inquiéter et à trouver ça bizarre.

                        Pour info : byte (≈ octet), bit (≈ bool).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 novembre 2008 à 17:39:30

                          Ok merci beaucoup, sa pourra me servir ;)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          les pointeurs... initialisations

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown