PDA

Просмотр полной версии : [Вопрос] Передача двухмерного массива в качестве параметров стока



DiFix
02.12.2014, 22:54
имеется сток

stock GetVehicleA(playerid, arr[])
{
new vehicleid = GetPlayerVehicleID(playerid);
for(new i; i<sizeof(arr); i++)
if(vehicleid == arr[i][carid]) return i;
return -1;
}

вызываю

new vehA = GetVehicleA(playerid,Tagach);


D:\GAMES\GTA_SA\SERVER_NEW\gamemodes\new.pwn(1487) : error 048: array dimensions do not match

Напомню, массив двухмерный, может это играет роль?


enum Tagach_prm{carid,pricepid,tmr};
new Tagach[MAX_TAGACH][Tagach_prm];

L0ndl3m
02.12.2014, 23:00
stock GetVehicleA(playerid, arr[])
[] - одномерный;
[][] - двумерный
Замените на:

stock GetVehicleA(playerid, arr[][])

DiFix
02.12.2014, 23:01
D:\GAMES\GTA_SA\SERVER_NEW\gamemodes\new.pwn(1487) : warning 229: index tag mismatch (symbol "Tagach")

DiFix
03.12.2014, 15:37
вопрос так и остается в силе
подскажите почему я не могу использовать массив, построенный по структуре enum'a, в качестве параметра функции?

DiFix
04.12.2014, 09:56
Ну где же профессионалы, сказали бы уже можно или нет?
а то не хочется делать так

new tagach_car_id[MAX_TAGACH];
new tagach_trailer_id[MAX_TAGACH];
new tagach_timer[MAX_TAGACH];

Daniel_Cortez
04.12.2014, 10:37
почему я не могу использовать массив, построенный по структуре enum'a, в качестве параметра функции?
Потому, что в объявлении размером 2-го измерения массива указано название enum'a.
И при объявлении параметров функции его тоже нужно указывать:

stock GetVehicleA(playerid, arr[][Tagach_prm])
Впрочем, после указания размера вся универсальность функции теряется: она будет работать только с массивами, у которых размером 2-го измерения указано Tagach_prm. Поэтому, если в Вашем моде всего один такой массив, проще будет вообще не передавать его в функцию и работать напрямую с глобальным масивом.

DiFix
04.12.2014, 17:58
Впрочем, после указания размера вся универсальность функции теряется: она будет работать только с массивами, у которых размером 2-го измерения указано Tagach_prm.
Жаль что без объявления enum'a ничего не выйдет, хотел сделать универсальный паблик, что бы работал с многими массивами.
Прийдется отказываться от enum'a..\
я просто хотел сделать удобную функцию, для перебора массива, и обнаружения нужной записи, возвращая при этом значение а. К примеру из Tagach[а][]