Ho la classe carta avente questi attributi:
class Carta
{
private:
string seme; // seme della carta
string nome; // nome della carta (fante, asso, ecc.)
int numero; // numero della carta (1-10)
int punteggio; // punteggio della carta
};
questa classe è aggregata alla classe mazzo che tramite l'operator-- restituisce una carta estratta a caso dal mazzo:
Carta Mazzo::operator-- (void)
{
if (carteAttuali > 0)
{
int posRandom = rand() % carteAttuali;
Carta estratta = carte[posRandom];
carte[posRandom] = carte[carteAttuali - 1];
--carteAttuali;
return estratta;
}
else
{
cerr << "Mazzo vuoto." << endl;
return Carta("", "", 0, 0);
}
}
ora volevo sapere se esiste un metodo per evitare di scrivere ogni volta il pezzo Carta("", "", 0, 0) e magari definire questa specie di carta ""vuota"" come una costante. sarebbe comodo poiché questa carta ""vuota"" viene restituita (in alcuni casi) anche da altri metodi.
il mio dubbio però è anche un altro: ammettendo che si possa dichiarare un'istanza costante, dove si mette? è possibile dichiararla nel file .cpp della classe o devo farlo per forza nel main? perché se fosse in quest'ultimo caso risulterebbe abbastanza inutile farlo, dato che le implementazioni dei metodi (che utilizzano la carta ""vuota"") sono tutte nei file .cpp delle rispettive classi...