это моя структура:
struct obcyObiekt{
float x;
float y;
bool alive;
};
в основном я создаю таблицу структуры
obcyObiekt obcy[15];
У меня нет идеи, как добавить аргумент struct table, coz:
void initObcych2(struct obcyObiekt &obcy[15] )
в основном
initObcych2(obcy[15]);
std::cout<<obcy[1].x;
doesnt работает вообще :( всегда будет 16 obcy, поэтому я создал таблицу этого
Если вы хотите, чтобы подпись функции сохраняла размер массива как часть безопасности типа:
void initObcych2( obcyObiekt (&obcy)[16])
Этот метод будет принимать только массив из 16
элементов типа obcyObiekt
, имя переменной параметра будет obcy.
Кажется, функция initObcych2 используется для инициализации элементов массива
obcyObiekt obcy[15];
В этом случае функция может быть объявлена как
void initObcych2( obcyObiekt obcy[], size_t n );
и называется
initObcych2( obcy, 15 );
Или вы можете объявить функцию как
void initObcych2( obcyObiekt ( &obcy )[15] );
и назовите его
initObcych2( obcy );
Однако первое объявление функции более гибкое, потому что вам не нужно будет менять объявление функции в случае, когда размер массива будет изменен и его можно будет вызывать для массивов разных размеров.
Что касается этой записи, которую вы показали
void initObcych2(struct obcyObiekt &obcy[15] )
когда
struct obcyObiekt &obcy[15]
представляет собой массив из 15 ссылок на объекты типа struct obcyObiekt. C++ позволяет объявлять массивы ссылок. Он позволяет объявить ссылку на массив вроде
struct obcyObiekt ( &obcy )[15]
initObcych2(obcy[15]);
этоinitObcych2(obcy);