Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème dans un constructeur de copie

error: array used as initializer

    3 avril 2019 à 10:12:21

    Bonjour à tous les codeurs ;)

    Je suis entrain de créer une classe permettant d'imiter les propriétés mathématiques d'une matrice homogène. En gros je veux juste multiplier des tableaux entre eux. Mais mon problème ne vient pas de là:

    class HomogenMatrix3D {
        private:
        int m_matrix [4][4];
        
        public:
        HomogenMatrix3D();
        HomogenMatrix3D(HomogenMatrix3D const& matrix);
    
        HomogenMatrix3D operator* (HomogenMatrix3D const& a);
        HomogenMatrix3D operator* (std::vector<double> const& a);
    
        void set (int pos,double i);
        double get (int pos);
    
    };

    Voici le prototype de ma fonction. Comme vous les voyez, une matrice homogène est un tableau de 4x4. Il y a deux façon de construire l'objet : la construction par défaut sans paramètres, et la construction par copie où je souhaite copier les attributs de l'objet mis en paramètre.

    Seulement, lors de l'écriture du code source je rencontre un problème :

     HomogenMatrix3D::HomogenMatrix3D(HomogenMatrix3D const& matrix): m_matrix(matrix.m_matrix){
    
    }

    Seulement, ici, mon compilateur (GCC), m'envoie un message d'erreur: error: array used as initializer. Je ne comprends pas très bien cette erreur, et le recherche sur le net me disent des choses pas très rassurante : du genre que j'ai un compilateur expérimentale ou quelque chose dans le genre.

    Du coup je suis un peu bloqué dans la progression de mon travail à cause de cette erreur que je n'arrive pas à résoudre.

    Quelqu'un peut il m'aider????

    Merci ;)

    -
    Edité par GrégoirePineau 3 avril 2019 à 10:15:00

    • Partager sur Facebook
    • Partager sur Twitter
      3 avril 2019 à 13:39:36

      Thanks :)

      Donc on va faire plus rapide :

      • pour les tableaux en C++ préférer std::array (pour avoir accès à des primitives supplémentaires de debug),
      • tu veux manifestement manipuler des doubles, mais tu as déclaré un tableau d'int,
      • préférer mettre l'opérateur "*=" en membre et l'opérateur "*" libre et ami,
      • pour les accès, utiliser plutôt un opérateur ().

      Pour ton problème, le comportement par défaut créé par le compilateur devrait faire le bon job. Si tu tiens absolument à écrire l'opérateur toi même il faut que tu fasses une boucle qui fait la copie des éléments internes.

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

      Problème dans un constructeur de copie

      × 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