Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Blood Red Rose
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 85
#1

Как правильно передать массив объектов пользовательского типа в функцию? - C++

01.09.2016, 07:05. Просмотров 274. Ответов 5

Доброго всем, пишу впервые пишу огромную программу - игру и столкнулся с проблемой, которую так сам и не могу решить. Нужно передать массив структур в функцию. Выдает ошибку "error: no match for 'operator[]'. Выглядит условно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Имеется структура
struct PLAYER
{
    char name[8];
    int recordscore;
};
 
int main()
{
  PLAYER player; //текущий игрок, допустим имя/счет заданы
  PLAYER LOADED[5]; //массив структур, хранит 5 предыдущих лучших рекордов + имена игроков, которые загружаются из файла
  Checking(player, LOADED);//тут возможно что то перед LOADED должно быть?
}
void Checking(struct PLAYER player, struct PLAYER LOADED) //функция для проверки нового рекорда от текущего игрока
{
        for(char i = 0; i < 6; i++)
        {
            if(player.recordscore > LOADED[i].recordscore) //тут я пробовал ставить -> по разному, не помогает
            {
                LOADED[i].name = player.name;
                LOADED[i].recordscore = player.recordscore;
            }
        }
}
Помогите разобраться
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2016, 07:05     Как правильно передать массив объектов пользовательского типа в функцию?
Посмотрите здесь:

Массив объектов пользовательского типа в vector - C++
Доброго времени суток. Кто может подсказать что храниться в vector&lt; Employer* &gt; employerArray ( 4 ); при его инициализации?

Создать динамический массив объектов пользовательского типа - C++
Есть класс class address { } Нужно создать динамический массив объектов. Записи создаются по одной (адреса), их общее число не...

Как правильно вызвать методы, чтобы передать весь массив объектов - C++
#include &lt;iostream&gt; using namespace std; class f { public: int a; f() { a = 0;

Как правильно передать массив в функцию? - C++
Возникла такая загвоздка: написал три функции для работы с массивом. Вроде всё компилирует, кроме вызова этих функций, а конкретнее при...

Как правильно передать в функцию указатель на двумерный массив? - C++
Сабж #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

Нюансы работы с массивами: как правильно передать массив в функцию в качестве аргумента? - C++
Здравствуйте!!!Начал недавно изучать с++ и с по книге!!!там есть пример и возник небольшой вопрос к нему!Скину весь код, чтобы было...

Как правильно передать динамический массив в функцию, увеличивающую его размер, чтобы изменения сохранились - C++
Извиняюсь за совсем нубский вопрос, похожее не нашел. Простая учебная задача - написать функцию, которая добавляет элемент в динамический...

Создать массив объектов пользовательского типа "Car" (каталог машин) и функции чтения/записи из/в каталог(а) - C++
Добрый день! Нужно составить программу, которая будет дополнять каталог автомобилей Имеется массив структур Auto *car = new Auto ...

Найти наименьший элемент массива объектов пользовательского типа - C++
Помогите, пожалуйста. Нужно ввести размер массива и его элементы, а программа должна вывести наименьший, но выдает ошибку. Что не так? ...

Как правильно инициализировать динамический массив пользовательского класса - C++
Допустим есть класс: class A { public: A(); A(int a, int b, int c) {} }; и нам нужно инициализировать динамический...

Передача в функцию динамический массив объектов первого и второго типа - C++
каким способом это можно сделать ? )

Реализовать поиск по заданному полю в массиве объектов пользовательского типа - C++
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран информацию о людях, родившихся под знаком зодиака, название...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Usagi
0 / 0 / 2
Регистрация: 03.07.2016
Сообщений: 14
Завершенные тесты: 2
01.09.2016, 07:54     Как правильно передать массив объектов пользовательского типа в функцию? #2
Передавайте в функцию ссылку на структуру. Массив через указатель, а размер массив отдельным параметром.
C++
1
void Checking(PLAYER & player, PLAYER * LOADED, int i)
Добавлено через 12 минут
Еще заметил, что функция содержимое player не меняет.Если player в функции меняться не будет, то лучше к первому параметру добавить квалификатор const.
Blood Red Rose
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 85
01.09.2016, 08:10  [ТС]     Как правильно передать массив объектов пользовательского типа в функцию? #3
теперь пишет ошибку "invalid array assigment"
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
01.09.2016, 08:20     Как правильно передать массив объектов пользовательского типа в функцию? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
struct PLAYER
{
    char name[8];
    int recordscore;
};
void Checking(const PLAYER& player, PLAYER* LOADED,int n); 
int main()
{
    PLAYER player={"Ivanov",3}; //текущий игрок, допустим имя/счет заданы
    PLAYER LOADED[5]={{"Ivanov",3},{"Petrov",3},{"Sidorov",3},{"Ivanov",4},{"Ivanov",2}};
    Checking(player, LOADED,5);
    return 0;
}
void Checking(const PLAYER& player, PLAYER* LOADED,int n) //функция для проверки нового рекорда от текущего игрока
{
    for(char i = 0; i < n; i++)
    {
        if(player.recordscore > LOADED[i].recordscore)
        {
            strcpy(LOADED[i].name,player.name);
            LOADED[i].recordscore = player.recordscore;
        }
    }
}
gru74ik
Модератор
Эксперт CЭксперт С++
4104 / 1749 / 196
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
01.09.2016, 08:28     Как правильно передать массив объектов пользовательского типа в функцию? #5
Blood Red Rose, вместо массива чаров используйте std::string:
C++
1
2
3
4
5
struct Player
{
    std::string name_;
    int recordscore_;
};
Вместо массива структур используйте std::vector:
C++
1
std::vector <Player> loaded_players;
В функцию при таком раскладе достаточно передать ссылку на вектор, параметризованный типом Player, и текущего игрока:
C++
1
void checking(std::vector <Player> & loaded_players, Player & current_player);
Blood Red Rose
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 85
01.09.2016, 08:46  [ТС]     Как правильно передать массив объектов пользовательского типа в функцию? #6
Благодарю, так заработало
Yandex
Объявления
01.09.2016, 08:46     Как правильно передать массив объектов пользовательского типа в функцию?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru