![]() |
|
Модераторы: bsa |
![]()
|
|
| Ukrajinec |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
Еще раз добрый вечер.
Пишу функцию-елемент которая ищет "свободное место" в масиве обьектов. Я решил за аргумент дать указатель на обьект который потом будет сравниватся с искомими елементами массива. Да вот беда на выражение *(a+j->ID) компилятор ругается "int j; выражение должно иметь тип указателя". Обьясните плз как выйти с этой ситуации. banking.h
banking.cpp
Это сообщение отредактировал(а) Ukrajinec - 26.3.2012, 22:03 |
||||
|
|||||
| Ukrajinec |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
*((a+j)->ID) Ошибка: "const User*a; Выражение должно иметь тип указателя"
*((a+j)->ID) Ошибка: "Операнд * должен быть указателем" и "член User::ID (обьявление из строки 7 ..адрес хидера..) недоступно" |
||||||
|
|||||||
| baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
a - указатель, доступ к членам a->name
*a - объект на который указывает а, доступ (*a).name a+i - указатель, доступ к членам (a+i)->name a[i] - объект на который указывает а+i, доступ к членам a[i].name
Добавлено через 3 минуты и 4 секунды
"функция-елемент" называется функцией-членом или методом класса. т.к. Find_free не имеет отношения к конкретному объекту, а работает с параметром a, её лучше сделать статической или вообще свободной, определенной вне класса. Добавлено через 8 минут и 9 секунд что возвращает FindFree если места нет? Добавлено через 12 минут и 10 секунд циклы вроде
возможно будут проще и понятнее, если переписать их как
|
||||||||
|
|||||||||
| Ukrajinec |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
Извините что так долго не отписовал, просто не позволяло время. Значит так вот несколько скринов по вариантам записи обьекта через указатель..
![]() ![]()
Суть сейчас не в том что возвращает функция, а в чем ошибка. Что будет возвращать функция придумается после того как она начнет работать.
Интересный метод записи, возьму на вооружение, спасибо. Но как тут его вписать я не знаю. Причина в том что цикл while должен работать до тех пор пока не встретися "0" или пока j не станет равным количеству елементов в массиве. А запись типа
возвращает ошибку...( |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
а вообще в С++ для этого есть стандартные средства http://www.cplusplus.com/reference/algorithm/find/ |
|||
|
||||
| Ukrajinec |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
снова User::ID недоступен(( ппробую переписать с чистого листа...
|
|||
|
||||
| Ukrajinec |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
Блин не получается и всё, ошибка идентична той что на 1-ом скрине((
Может я как то не правильн осозаю проект?.. Это сообщение отредактировал(а) Ukrajinec - 1.4.2012, 22:58 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| Ukrajinec |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
mes
Это как? Я еще так не знаю. Расскажи или дай ссилку на материал плз... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
Ukrajinec, давай отделим мух от котлет.
итак, есть класс User, у него есть атрибуты ID, PIN, Money. Нужно средство для создания объекта класса (конструктор) и методы чтения атрибутов. Для простоты сделаем атрибуты открытыми членами класса, что бы не писать функции get. (В настоящем коде лучше сделать функции)
с другой стороны есть множество User'ов, которые хранятся в контейнере (например массиве). Здесь можно пойти двумя путями: написать контейнер и функции доступа к нему самостоятельно или использовать средства стандартной библиотеки STL. с использованием STL: в качестве контейнера используем стандартный вектор std::vector<User>. к нему можно обращаться как к массиву в качестве "удаления" элемента будем записывать элемент со значением по умолчанию, с нулевыми данными в качестве поиска - стандартную функцию std::find в любом случае имеются две сущности - объекты типа User и контейнер User'ов типа
если, например, для хранения пользователей используется обычный массив размера n, то искомая функция могла бы быть такая:
|
||||||
|
|||||||
| Ukrajinec |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 6.4.2009 Репутация: нет Всего: нет |
К векторам и "друзьям" мне еще примерно 70 стрниц читать.)) Отложу пока эту роботу до тех пор пока не выучу материал хотябы до этих пунктов)
Спс за помощь... Это сообщение отредактировал(а) Ukrajinec - 5.4.2012, 14:39 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |