Tôi đang sử dụng C++ để tạo bản đồ ô cho trò chơi. Vấn đề của tôi là, tôi muốn cư trú một mảng đa chiều của ints trong constructor Map, nhưng nó không hoạt động đúng. Đây là mã của tôi trong "Map.h" (mã không liên quan đã bị xóa).mảng intulating là biến thành viên
class Map {
private:
int mapArray[15][20];
};
Và mã của tôi từ Map.cpp
Map::Map()
{
mapArray = {
{ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 },
{ 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 },
{ 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59 },
{ 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79 },
{ 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99 },
{ 100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119 },
{ 120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139 },
{ 140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159 },
{ 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179 },
{ 180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199 },
{ 200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219 },
{ 220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239 },
{ 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259 },
{ 260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279 },
{ 280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299 }
};
}
PS. tạo mapArray cục bộ, bên trong một hàm thành viên sử dụng int mapArray [15] [20] và populating nó sau đó hoạt động tốt, tôi dường như không thể đưa nó vào trong constructor, với một biến member.
PPS. Rất gỉ với C++, hãy nhẹ nhàng.
Tôi đang làm gì sai?
Xin cảm ơn, James.
Nếu bạn không thay đổi giá trị mảng từ đối tượng thành đối tượng, thì điều bạn thực sự cần là mảng thành viên * tĩnh *. Xem câu trả lời của Mads. – AnT
Nếu chúng là tất cả các số thứ tự, nó có thể đơn giản hơn chỉ để viết một vòng lặp (một mảng hai chiều là tiếp giáp trong bộ nhớ, vì vậy bạn thậm chí không cần các vòng lồng nhau). (Nếu những giá trị này sẽ không thay đổi, có thể sẽ rẻ hơn để tính toán chúng hơn là tìm kiếm chúng.) – UncleBens
Chúng sẽ không luôn luôn được tuần tự. Chúng chỉ là giá trị thử nghiệm. –