2015-12-24 14 views
7

Wir haben eine Aufgabe, ein Spiel von Blackjack zu erstellen.C++ - Probleme mit Array von Objekten

Bellow ist Version meines Code vereinfacht:

#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; 
} 

Das Problem ist, wo das Array von Objekten Karte erstellt wird. Der Compiler gibt mir die folgenden Fehler:

Error C3646 'cards': unknown override specifier

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

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

Error C2238 unexpected token(s) preceding ';'

Was ist falsch mit meinem Code?

+2

Da der Compiler die Klasse Card nicht versteht, löst er den Parser aus, wodurch die Fehlermeldungen ziemlich stumpf werden. – mksteve

+0

Ich fühle für dich. Die Tatsache, dass C++ Forward-Deklarationen überhaupt benötigt (im Gegensatz zu anderen Sprachen, siehe C#, die die Arbeit für Sie erledigen) plus die Tatsache, dass die Fehlermeldung irreführend ist ... Seufzer. Warum programmieren wir wieder in C++? :) –

Antwort

8

Der Compiler weiß nicht, welche Karte ist, also kann der richtige Code nicht generiert werden.

Die Klasse Card Bedürfnisse vor der Klasse Deck erklärt werden, wie Card im Deck enthalten ist.

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 was für ein dummer Fehler -.- kein Wunder, ich konnte nicht etwas falsch mit dem Code denken, weil es wegen der Bestellung war! trotzdem danke für die Hilfe :) – user5714811

+1

@ user5714811 Bitte markieren Sie die Antwort als akzeptiert und upvote es, wenn es Ihnen geholfen hat, Ihr Problem zu lösen. –

Verwandte Themen