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