2015-12-24 15 views
7

Chúng tôi có nhiệm vụ tạo trò chơi blackjack.Vấn đề C++ với mảng đối tượng

Bellow được đơn giản hóa phiên bản của mã của tôi:

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

Vấn đề là nơi mà các mảng của các đối tượng thẻ đang được tạo ra. trình biên dịch cung cấp cho tôi các lỗi sau:

Error C3646 'cards': unknown override specifier

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

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

Error C2238 unexpected token(s) preceding ';'

Điều gì sai với mã của tôi?

+2

Do trình biên dịch không hiểu Thẻ lớp, nó ném trình phân tích cú pháp, làm cho các thông báo lỗi khá ngớ ngẩn. – mksteve

+0

Tôi cảm thấy cho bạn. Thực tế là C++ yêu cầu các khai báo về phía trước (không giống như các ngôn ngữ khác, C# C, làm công việc cho bạn) cộng với thực tế là thông báo lỗi là gây hiểu nhầm ... thở dài. Tại sao chúng ta lại lập trình C++? :) –

Trả lời

8

Trình biên dịch không biết Thẻ là gì, vì vậy không thể tạo mã đúng.

Lớp học Card cần phải được khai báo trước lớp Deck, như Card được bao gồm trong 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 những gì một sai lầm ngu ngốc -.- không có thắc mắc tôi couldnt nghĩ về bất cứ điều gì sai với mã gây ra nó là vì đặt hàng! anyway nhờ sự giúp đỡ :) – user5714811

+1

@ user5714811 Vui lòng đánh dấu câu trả lời là được chấp nhận và upvote nó nếu nó đã giúp bạn giải quyết vấn đề của bạn. –

Các vấn đề liên quan