Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    77

    [C++]Error: No matching function for call to

    Salve a tutti!
    Per esercitarmi nell'utilizzo delle classe e nella programmazione orientata a oggetti ho deciso di realizzare un programma che simuli una partita di carte.
    Per testare il programma, ho cercato di compilarlo dopo aver completato la parte in cui il programma crea un mazzo, lo mescola, pesca dieci carte e le mostra.
    Tuttavia, dopo aver corretto alcuni problemi minori o di sintassi, ne rimane uno che non riesco proprio a correggere, per cui vi chiedo: dov'è questo benedetto errore?!

    Posto innanzitutto il codice.

    Carta.h:

    codice:
    #include <iostream>
    using namespace std;
    
    class CCarta {
       public:
          CCarta(char seme0, int valore0);           //Costruttore
          char getseme() { return seme; };         //Conoscere il seme
          int getvalore() { return valore; };          //Conoscere il valore
          void mostra();
       private:
          char seme;
          int valore;
    };
    
    CCarta::CCarta(char seme0, int valore0)
    {
       seme = seme0;
       valore = valore0;
    }
    
    void CCarta::mostra()
    {
       if(valore == 1)
          cout << "E' un asso";
       else
          cout << "E' un " << valore;
    
       if(seme == 'D')
          cout << " di denara.";
       else if (seme == 'S')
          cout << " di spade.";
       else if (seme == 'C')
          cout << " di coppe.";
       else
          cout << " di bastoni.";
    }
    Carte.cpp :

    codice:
    #include <iostream>
    #include <stdlib.h>
    #include "carta.h"
    using namespace std;
    
    CCarta pesca(CCarta array[]);
    void mescola(CCarta array[]);
    
    int main()
    {
       //Creo mazzo
       CCarta mazzo[39];
       int k = 0;
       int i = 0;
       for(i = 1; i < 11; i++) {
          mazzo[k] = CCarta('D', i);
          k++;
       }
       for(i = 1; i < 11; i++) {
          mazzo[k] = CCarta('S', i);
          k++;
       }
       for(i = 1; i < 11; i++) {
          mazzo[k] = CCarta('B', i);
          k++;
       }
       for(i = 1; i < 11; i++) {
          mazzo[k] = CCarta('C', i);
          k++;
       }
    
       //Mescolo il mazzo
       mescola(mazzo);
    
       //Pesco una mano di dieci carte
       CCarta mano[9];
       for(i = 0; i < 10; i++)
             mano[i] = pesca(mazzo);
    
       //Guardo le carte
       for(i = 0; 1 < 10; i++)
             mano[i].mostra();
    }
    
    CCarta pesca(CCarta array[])
    {
       CCarta temp;
       temp = array[1];
       for(int z = 1; z < 40; z++) {
          if(array[z].getvalore() == 0)
             break;
          array[z-1] = array[z];
          array[z] = CCarta('X', 0);
       };
       return temp;
    }
    
    void mescola(CCarta array[])
    {
       srand(time(NULL));
       CCarta swap;
       int ran;
       int m = 0;
       for(int n = 0; n < 500; n++) {
          ran = rand() % 40;
          swap = array[m];
          array[m] = array[ran];
          array[ran] = swap;
          if(m == 39)
             m = 0;
          else
             m++;
       }
    }
    L'errore, invece, è il seguente:

    carte.cpp: In function ‘int main()’:
    carte.cpp:12: error: no matching function for call to ‘CCarta::CCarta()’
    carta.h:15: note: candidates are: CCarta::CCarta(char, int)
    carta.h:4: note: CCarta::CCarta(const CCarta&)
    carte.cpp:36: error: no matching function for call to ‘CCarta::CCarta()’
    carta.h:15: note: candidates are: CCarta::CCarta(char, int)
    carta.h:4: note: CCarta::CCarta(const CCarta&)
    carte.cpp: In function ‘CCarta pesca(CCarta*)’:
    carte.cpp:47: error: no matching function for call to ‘CCarta::CCarta()’
    carta.h:15: note: candidates are: CCarta::CCarta(char, int)
    carta.h:4: note: CCarta::CCarta(const CCarta&)
    carte.cpp: In function ‘void mescola(CCarta*)’:
    carte.cpp:61: error: no matching function for call to ‘CCarta::CCarta()’
    carta.h:15: note: candidates are: CCarta::CCarta(char, int)
    carta.h:4: note: CCarta::CCarta(const CCarta&)

    Mi aiutate?!

  2. #2
    Il messaggio di errore in questione è abbastanza generico e può dipendere da diverse cose, non starei a dirottare un thread così vecchio. Apri un nuovo thread, specificando anche il codice che dà problemi oltre al messaggio di errore.

    Qui chiudo.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.