Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classe Tableau

    23 mars 2008 à 15:55:48

    Bonjour,
    Je cherche à implémenter une classe tableau en C++. Pour cela, j'ai pris 2 attributs : l'un est la taille du tableau et le deuxième est un pointeur sur la zone allouée pour le tableau. Je voudrais savoir s'il était possible de surcharger des opérateurs pour faire des choses de ce type :

    1. tableau[i] = 13;
    2. tableau = {1, 2, 3, 4, 5, 6};


    D'avance, merci pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2008 à 16:00:48

      1. Oui, surcharge l'opérateur [] -- cf std::vector, boost::array
      2. Des trucs qui ressemblent, mais c'est un chouilla complexe, il y a plus important surtout si tu démarres.
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        23 mars 2008 à 16:01:58

        Pour le premier truc, je sais que je peux utiliser l'opérateur [] mais là j'ai besoin d'une lvalue, non ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 mars 2008 à 16:03:15

          Salut,

          Tu peux regarder du côté de la classe vector, ce sont des tableaux dynamiques.

          Sinon, si c'est pour coder ta propre classe, oui, il y a possibilité de surcharger l'opérateur [] :

          1. Tableau &operator[](const int);


          Par contre pour faire quelque chose comme tableau = {1, 2, 3, 4, 5, 6}; je ne sais pas
          • Partager sur Facebook
          • Partager sur Twitter
            23 mars 2008 à 16:06:07

            Oui, l'idée est de m'entraîner à créer une classe. lmghs, peux-tu développer sur {} ?
            • Partager sur Facebook
            • Partager sur Twitter
              23 mars 2008 à 16:27:15

              2-
              boost.assign est ce qui ressemble le plus à ce que tu cherches à accomplir.
              L'idée est de surcharger un opérateur qu'il est usuellement fortement déconseillé de surcharger : l'opérateur virgule. Tu auras donc un truc qui ressemble, via l'opérateur virgule, mais différent : sans accolades. Pour cela, il faudra attendre la prochaine norme du langage.

              1- Il y a deux surcharges à définir :
              1. value_type const& operator[](size_type idx) const;
              2. value_type        operator[](size_type idx);
              • Partager sur Facebook
              • Partager sur Twitter
              C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                23 mars 2008 à 17:03:50

                Il était tout à fait possible de surcharger l'opérateur virgule sans faire d'entorse à la norme.
                Mais par contre ça ne sera pas super-sécurisé ni tout à fait "propre".

                Regarde le lien "nouveau" dans ma signature.
                • Partager sur Facebook
                • Partager sur Twitter
                Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                  23 mars 2008 à 17:08:25

                  Le C++0x apportera la possibilité de passer des expressions-tableau (j'ai oublié le terme officiel) en paramètre. Aujourd'hui, ce n'est pas possible.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                    23 mars 2008 à 17:13:26

                    Ok, il fallait prendre ta remarque dans ce sens. Autant (au temps ?) pour moi.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                      23 mars 2008 à 17:17:24

                      Effectivement, il pourrait manquer des mots dans mon enchainement ^^'
                      <hs>"au temps"</>
                      • Partager sur Facebook
                      • Partager sur Twitter
                      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                      Classe Tableau

                      × 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