![]() |
|
Модераторы: Poseidon |
![]()
|
|
| AkFirm |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Всем привет.
Возникла следующая задача:необходимо реализовать дин.список. мне необходим лишь класс реализующий элемент данного списка. Почитал темы,но во всех примерах по C++ увидел лишь реализацию в виде Struct. На делфе у меня это выглядит так:
вся трудность на си заключается именно при объявлении указателей типа "Item". Например:
возникает ошибка "Multiple declaration for Item " Замечу,что необходим именно класс. Заранее благодарю всех кто откликнеться |
||||
|
|||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 4 Всего: 14 |
Кидай кусок кода на который происходит такое ругательство. -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| AkFirm |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) Guedda - 17.6.2007, 14:25 |
||||
|
|||||
| HoTMetaL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 15.4.2007 Репутация: 1 Всего: 4 |
Компилятор пропустил этот код:
PS выкинь весь исходник и покажи где конретно компилятор выдаёт ошибку. Это сообщение отредактировал(а) HoTMetaL - 17.6.2007, 14:56 |
|||
|
||||
| AkFirm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Вот так выглядит весь юнит в виде, в котором пропустил твой компилятор.
Мой пропускать не хочет ни в какую.
Ошибки следующие: [C++ Error] DynList.h(15): E2238 Multiple declaration for 'Item' [C++ Error] DynList.h(14): E2344 Earlier declaration of 'Item' [C++ Error] DynList.h(27): E2171 Body has already been defined for function 'Item::Item(AnsiString)' [C++ Error] DynList.h(34): E2171 Body has already been defined for function 'Item::SetNext(Item *)' [C++ Error] DynList.h(39): E2171 Body has already been defined for function 'Item::SetInf(AnsiString)' P.S. Нумерация строк сохранена |
|||
|
||||
| HoTMetaL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 15.4.2007 Репутация: 1 Всего: 4 |
Есть предположение, что у тебя уже есть описание данного класса в другом модуле, отсюда и
PS Я ещё плохо разбираюсь в директивах препроцессора, но попробуй закомментарить строки 3, 4, 8. Это сообщение отредактировал(а) HoTMetaL - 18.6.2007, 16:19 |
|||
|
||||
| AkFirm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Наконец-то разобрался.
Дело было вовсе не в указателях и не в директивах компилятора. В нескольких модулях происходило подключение одного юнита. Поэтому при объявлении в этом модуле любой структуры получали что она объявлена несколько раз. Ну это как я понял.Теперь во всяком случае все нормально. Спасибо за помощь. Если бы не совет по поводу директив компилятора в жизни бы не нашел подключение=) |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 21 Всего: 92 |
AkFirm, строку #endif необходимо перенести в конец файла, это и будет защитой от двойного подключения хидера, в некоторых случаях его (двойного подключения) не избежать, для защиты и был придуман такой прием.
Работает так
Советую директивы не убирать, только #endif перенеси на место (в конец файла), это общепринято таким образом (хотя есть другие способы) защищать хидеры. |
|||
|
||||
| HoTMetaL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 15.4.2007 Репутация: 1 Всего: 4 |
2zkv
Спасибо за просвещение. 2Автор Будь внимательнее при написании модулей, иногда стОит набросать схему программы на листе бумаги. |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |