![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| profi80 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
Добрый день,
не могу получить доступ к членам массива структур из функции main. Дело в том, что для main оказывается видимой только первая структура в массиве (индекс 0), а две другие (1 и 2) - нет. Подскажите пожалуйста в чём дело? Код: Заголовок (объявление массива структур)
Инициализация массива:
Функция main:
Дело в том, что DisplayRecord показывает содержимое всех структур, а вот из main напрямую показать не получается. Возможно это связано с тем, что я неправильно обращаюсь к массиву структур? Добавлено @ 13:21 Да, ещё вот что: main() и функции для работы со структурами находятся в разных файлах .cpp |
||||||
|
|||||||
| JackYF |
|
||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ты объявляешь не массив структур, а массив указателей на структуры.
Попробуй:
Либо, если не хочешь переписывать остальные функции, то в main() тебе придется делать так:
|
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
profi80,
mailingListRecord tmpa; Перед "tmpa" звездочку забыли А вообще стиль хромает сильно, оттого и такие баги. Что возвращает InputRecord непонятно. И ради Бога, отделите *rec[3] от описания структуры. Добавлено @ 16:23 JackYF, Ну можно и так. Но я бы не стал _структуры_ приравнивать. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
У тебя будет быстрее работать, согласен Зато у меня надо сделать 1 исправление, а у тебя 1 + 3 = аж целых 4
Это точно. У тебя привязка функций DisplayRecord и InputRecord к конкретным объявленных структурам. Зачем? Передавай указатели на структуры в эти функции. Тогда и rec[3] сможешь объявить в main(). А вообще, где выделение памяти под эти самые 3 структуры? В изначальном коде только 3 указателя, и больше ничего. Поэтому создавай не массив указателей, а просто массив структур. |
|||
|
||||
| profi80 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
Вот так:
не работает! Выдаёт [C++ Error] Unit1.cpp(37): E2093 'operator*' not implemented in type 'mailingListRecord' for arguments of the same type Вот где выделяется память (InputRecord):
Массив указателей нужен потому, что нужно разместить структуры в динамической памяти. Таким образом, получается что оба предложенных решения не решают проблему. Остаётся только
|
||||||
|
|||||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
profi80,
LOL Ты меня конечно извини, но ты ... Вот ну совсем не надо было ОБА варианта применять одновременно. Надо было ОДИН юзить. И еще неплохо бы подумать ЧТО мы имели в виду прежде чем :
А вот это ты зря Это сообщение отредактировал(а) GrayCardinal - 29.11.2006, 10:18 |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Функция возвращает указатель на структуру. Причем только на первую А должна возращать указатель на массив указателей
Тогда
-------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| profi80 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
Ну зачем же так сразу... я тоже могу ведь обидеться.
так попробовал - не получилось, о чём и сообщил.
А вот это - действительно решение проблемы! Спасибо! Запутался немного с этими указателями... +1 to Vyacheslav !!! Это сообщение отредактировал(а) profi80 - 29.11.2006, 13:26 |
||||||
|
|||||||
| profi80 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
В общем, всем спасибо. Вопрос решён, тема закрыта.
To GrayCardinal : по-деликатнее с новичками на форуме.... |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
Прости Господи |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |