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?!