vasyok28
22.04.2017, 12:40
Всем привет)
Столкнулся с такой задачей, нужно прогнать энум через цикл.
Пример:
enum Test
{
Nick1[MAX_PLAYER_NAME+1],
Nick2[MAX_PLAYER_NAME+1]
};
new NickTest[5][5][Test];
Обращение в данном случае идет по ключу энума:
NickTest[0][0][Nick1];
NickTest[0][0][Nick2];
А мне надо что-то типа такого (по индексу):
NickTest[0][0][0];
NickTest[0][0][1];
Раньше кажется делал такое, только подзабыл.
Можно сделать так:
NickTest[0][0][Test:0];
vasyok28
22.04.2017, 13:20
Можно сделать так:
NickTest[0][0][Test:0];
Так не будет работать
В enum массив - это лишь набор констант, что идут друг за другом.
То бишь, вот этот код:
enum Test
{
Nick1[5],//1 член перечисления
Nick2[5]//2 член перечисления
};
new test[Test];
Будет равносилен этому:
enum Test
{
Nick1_1,//1 член перечисления
Nick1_2,//2 член перечисления
Nick1_3,//3 член перечисления
Nick1_4,//4 член перечисления
Nick1_5,//5 член перечисления
Nick2_1,//6 член перечисления
Nick2_2,//7 член перечисления
Nick2_3,//8 член перечисления
Nick2_4,//9 член перечисления
Nick2_5//10 член перечисления
};
new test[Test];
И когда ты, например, обращаешься к Nick2 в первом случае:
test[Nick2];
Ты обращаешься не к массиву Nick2, а к 6-ому члену перечисления "Nick2_1".
Короче, в enum нет массивов в обычном виде. Этот код:
enum Test
{
Nick1[5],//1 член перечисления
Nick2[5]//2 член перечисления
};
new test[Test];
Не обозначает то, что ты создал двумерный массив test. Он означает лишь то, что ты создал одномерный массив из 10 ячеек. А уже константы "Nick1" и "Nick2" хранят в себе номера ячеек (0 и 5), которые как бы делят этот одномерный массив на две части.
То же самое можно вручную сделать так:
new test[10];
main()
{
strcat(test[0], "Test", 5);// Указываем, что запись в массив начинается с нулевой ячейки (текст займёт место с нулевой по 4-ую ячейку)
strcat(test[5], "Text", 5);// А тут указываем, что запись в массив начинается с пятой ячейки (текст займёт место с пятой ячейки по 9-ую)
}
И в 1 массиве будет 2 разных текста хранится.
Скажи что ты конкретно хочешь сделать и мы уже подскажем тебе решение
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot