![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
хочу создать функцию которая будет строить динамическую цепочку из структур, тойсть есть функция которая принимает как параметр указатель и структуру которую я хочу добавить в цепочку, это просто в принципе, но когда у меня например в одной проге ДВА разных типа структур мне надо дублировать функцию что делает цепь, так вот вопрос в том как добавить универсальность в эту функцию чтоб она служила для разных типов структур.
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Не мешало бы уточнить язык.
|
|||
|
||||
| Fedor |
|
||||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
мож, я не догнал, но нельзя сделать например так:
И присваивать уже не саму структуру, а указатель на нее:
Это сообщение отредактировал(а) Fedor - 6.5.2007, 14:00 -------------------- Мы - Днепряне. Мы всех сильней. |
||||||
|
|||||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Daevaorn, язык С
Fedor, а почему указатель типа char? |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
ressac, ну, на самом деле не так важно. Можно к указателю на void или int приводить
-------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
ИМХО void* лучше, не возникнет идеи вывести его на экран как строку итд.
-------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| ressac |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
не совсем понял.... что ты хочешь сказать этим? Fedor, а потом когда я хочу что-то вытащить/прочитать из этой цепочки то мне надо указать привести как структуру? тойсть ...
так? |
||||
|
|||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Перед тем, как преобразовывать pStruct в указатель на какую-либо структуру, надо убедиться, что pStruct действительно ссылается на структуру нужного типа. Для этого следует придерживаться какого-либо соглашения, например, что все структуры, предназначенные для хранения в списке, должны всегда иметь идентификатор типа в первом члене. Либо хранить этот идентификатор в структуре ELEMENT
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Ну если нужно указатель на структуру, то логичнее использовать void* чем скажем char*, потому что тебе или тому, кто будет использовать этот код не прийдёт в голову мысль использовать этот указатель как строку, даже если у переменной будет не совсем однозначное имя. -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| ressac |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 25.11.2006 Репутация: нет Всего: 1 |
Fedor, спасибо за хорошую идею насчет указателей...
nickless, понял, спасибо
что то не совсем я тебя понимаю, можно пример? 2ALL а не знаете где есть хороший хороший мануалчик по указателям для С, тот что в главной ветке я прочитал, но хочется ещё что-то узнать... |
|||
|
||||
| Жуть |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 27.6.2006 Репутация: нет Всего: нет |
Как ты будеш восстанавливать тип своей структуры без знания, какой именно это тип?
А на С++ было бы хорошо ввести абстрактый класс с чисто виртуальными функциями-членами и дергать методы элемента не заморачиваясь над его действительным типом благодаря полиморфизъму. P.S. В коде могут быть синтаксические ошибки - я давно не писал на чистом С Это сообщение отредактировал(а) Жуть - 6.5.2007, 16:18 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |