Tôi hiện đang làm việc trên một trò chơi thẻ, và tôi đang gặp rắc rối với một số mã khởi tạo:Khởi tạo một mảng của các đối tượng
// in my class...
Card cards[20];
// in method...
for(int i = 0; i <= 20;i++)
cards++ = new Card(i, /*i as char +*/ "_Card.bmp");
Vấn đề là trình biên dịch của tôi nói với tôi rằng cards++
không phải là một l -giá trị. Tôi đã đọc lên trên toàn bộ mảng tương đương với mảng con trỏ, và tôi nghĩ tôi đã hiểu nó, nhưng than ôi, tôi không thể làm cho nó hoạt động được. Sự hiểu biết của tôi là vì cards
giảm xuống con trỏ và toán tử new
cho tôi con trỏ đến vị trí của phiên bản Thẻ mới của tôi, khi đó mã trên phải biên dịch. Đúng?
Tôi cũng đã thử sử dụng một subscript, nhưng không phải là cards+i
, cards++
và cards[i]
chỉ 3 cách để nói điều tương tự? Tôi nghĩ rằng mỗi cái trong số đó là giá trị l và được coi là con trỏ.
thẻ + tôi trả lại thẻ + i; thẻ ++ increments thẻ của một; Thẻ [i] trả về một tham chiếu đến phần tử thứ i trong thẻ. Tất cả đều khác nhau. –