2015-12-24 16 views
7

Abbiamo un compito per creare un gioco di blackjack.Problemi di C++ con array di oggetti

Bellow è semplificato versione del mio codice:

#include <iostream> 
#include <string> 
#include <time.h> 

using namespace std; 

class Deck 
{ 
private: 
    Card cards[52]; <-- HERE!! 
public: 

}; 

class Card 
{ 
private: 
    int suit; 
    int number; 
public: 


    int getSuit(); 
    int getNumber(); 
    void setCard(int suit, int number); 

}; 
int Card::getSuit() 
{ 
    return suit; 
} 

int Card::getNumber() 
{ 
    return number; 
} 

void Card::setCard(int s, int n) 
{ 
    suit = s; 
    number = n; 
} 

class Players 
{ 
private: 
    Card PlayersCards[10]; 
public: 
    /*Card getCard();*/ 


}; 

//Card Players::getCard() 
//{ 
// return; 
//} 

int main() 
{ 
    Players user; 


    cin.get(); 
    cin.get(); 
    return 0; 
} 

Il problema è dove è stato creato l'array di oggetti card. il compilatore mi dà i seguenti errori:

Error C3646 'cards': unknown override specifier

Error C2143 syntax error: missing ',' before '['

Error C2143 syntax error: missing ')' before ';'

Error C2238 unexpected token(s) preceding ';'

Cosa c'è di sbagliato nel mio codice?

+2

Poiché il compilatore non comprende la classe Card, genera il parser, rendendo i messaggi di errore abbastanza ottusi. – mksteve

+0

Mi sento per te. Il fatto che C++ richieda le dichiarazioni avanzate (a differenza di altri linguaggi, cf C#, che fanno il lavoro per voi) oltre al fatto che il messaggio di errore è fuorviante ... sospiro. Perché programmiamo di nuovo in C++? :) –

risposta

8

Il compilatore non sa cosa sia la scheda, quindi non può generare il codice giusto.

La classe Card deve essere dichiarato prima della classe Deck, come Card è incluso nel Deck.

class Card { 
    /// stuff - allows compiler to work out the size of one Card. 
}; 

class Deck { 
    private: 
    Card cards[52]; // knows how to create 52 of these. 
}; 
// implementation can go later. 
int Card::getSuit() 
{ 
    return suit; 
} 
+0

oh che stupido errore -.- non mi meraviglia che non potrei pensare a qualcosa di sbagliato con il codice, perché è stato a causa di ordini! comunque grazie per l'aiuto :) – user5714811

+1

@ user5714811 Si prega di contrassegnare la risposta come accettata e revocarla se vi ha aiutato a risolvere il vostro problema. –