Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de compilation

Sujet résolu
    17 décembre 2007 à 1:54:28

    bonsoir,
    j'arrive pas à compiler, le compilateur affiche ça << invalid convertion from 'elem*' to 'elem'==> ligne 23
    voici mon code
    1. #include <cstdlib>
    2. #include <iostream>
    3. using namespace std;
    4. const int MAX=6;
    5. typedef int elem;
    6. typedef elem Vect[MAX];
    7. void triParSelection(Vect V[], int n)
    8. {
    9.      for(int i=0;i<n-1;++i)
    10.      {
    11.              elem save;
    12.              int min = i;
    13.              {
    14.                  for(int j = i+1;j<n;++j)
    15.                      if(V[j]<V[min])
    16.                      min=j;
    17.                      save = V[min];
    18.                      V[min]=V[i];
    19.                      V[i]=save;
    20.              }    
    21.      }
    22.      for(int i=0;i<n;++i)
    23.      {
    24.              cout << V[i] << " " ;
    25.      }
    26.              cout << endl;
    27. }
    28. int main(int argc, char *argv[])
    29. {
    30.     elem T;
    31.     for(int i=0;i<MAX;++i)
    32.     {
    33.             cin >> T[i];
    34.     }
    35.     triParSelection(T, MAX);
    36.     system("PAUSE");
    37.     return EXIT_SUCCESS;
    38. }

    qqun pourrait me dire où est l'erreur svp? merci
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2007 à 4:15:04

      tu dois définir une surcharge de l'opérateur << pour elem...


      Solution pas de typedef inutile pour émuler des #define boiteux!
      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2007 à 17:30:10

        on n'a pas étudié la surcharge d'opérateurs ni les #define en classe.je précise que c'est pour un exercice, et que le prof a donné le même code dans son syllabus...
        • Partager sur Facebook
        • Partager sur Twitter
          17 décembre 2007 à 17:38:28

          typedef int elem;
          elem equivaut à un int...
          typedef elem Vect[MAX];
          puis à un int*...
          tu te complique la vie...


          il n'y a pas de surcharge d'operateur possible car il ne se trouve pas dans une class :p

          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2007 à 15:28:27

            Je me reprend : Il y a possibilité de surcharge sur autre chose que des classes mais pas sur les typedef de type de base : vrai.

            Et j'ai retravaillé et tester ton code pour comprendre le but des 2 typedef (Je me souviens avoir vu ça une fois quelque part)

            Donc elem est un int
            et Vect est un elem[] de taille MAX (6)

            L'erreur est flagrante une fois qu'on comprend le fonctionnement dans ton Main T ne devrait pas être de type elem mais bien Vect

            1. Vect T; // Équivaut à elem T[ 6 ];
            • Partager sur Facebook
            • Partager sur Twitter

            Problème de compilation

            × 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