![]() |
|
Модераторы: bsa |
![]()
|
|
| Ak47black |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
Вот такой у меня код
получаю ошибку
А вот такой
получается без ошибок. Подскажите, как мне правильно быть здесь
и здесь
?? Добавлено @ 17:00 Я тут просто пытаюсь сделать что-бы с каждым сокетом ещё хранился дескриптор. (Делаю простой клиент-сервер запроса содержимого каталога) Это сообщение отредактировал(а) Ak47black - 16.10.2010, 17:00 |
||||||||||
|
|||||||||||
| Crafty |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Здесь ты обращаешься к несуществующему элементу:
Попробуй вот так
|
||||||
|
|||||||
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Попробовал
Добавлено @ 17:51 Мне кажется тут не это. Изза того, что во втором моём коде
работает Это сообщение отредактировал(а) Ak47black - 16.10.2010, 17:51 |
||||||
|
|||||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Попробуй ещё так
|
|||
|
||||
| Ak47black |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Добавлено @ 17:58 clients.end() по сути возвращает последний элемент. Тоесть в моём случает это структура. Получается что clients.end()->sock(в первом) тоже самое что clients.end() во втором моём коде. А где ошибка немогу понять Добавлено @ 18:04
Думаю, тут не из-за этого так как ошибка возникает во время компиляции Это сообщение отредактировал(а) Ak47black - 16.10.2010, 18:11 |
||||||||||
|
|||||||||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
С 80 строкой понял
тут
|
|||
|
||||
| Crafty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Ещё можно попробовать оператор разыменования убрать перед max_element.
Хотя это тоже не верно. Нашёл ф-цию max_element (ссылка), ей нужно передавать два итератора и возвращает она итератор на макс элемемент. То есть нужно делать или как во втором примере или передавать также два итератора и написать ф-цию для сравнения элемнтов через it->socket Добавлено @ 18:40 Понятно. Добавлено через 7 минут и 30 секунд А тут
Вообще-то изменять значения эл-тов сета нельзя, они константны, их можно только добавлять и удалять. Добавлено через 10 минут и 29 секунд Тут посмотрите ссылка. Это сообщение отредактировал(а) Crafty - 16.10.2010, 18:41 |
||||
|
|||||
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Я вот над этим в данным момент и сижу Добавлено @ 19:03 А как насчет того что-бы там хранить указатель на указатель на DIR? Вот такой код у меня получился
Но вижу кучу странных ошибок
Добавлено @ 19:06 Я компилирую с g++ Добавлено @ 19:14 Что-то с 80 строкой по прежнему Это сообщение отредактировал(а) Ak47black - 16.10.2010, 19:15 |
||||||
|
|||||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Буду ждать Ваших ответов по последнему коду и ошибкам в нём, так как сам я в этом лесу уже полностью "заблудился".
|
|||
|
||||
| 586 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 8 Всего: 146 |
В std::set элементы находятся в отсортированном состоянии, и максимальный элемент находится в *(--clients.end()). Использовать std::max_element смысла нет.
И std::set не будет компилироваться без перегруженного оператора сравнения:
Это сообщение отредактировал(а) 586 - 16.10.2010, 22:32 |
||||
|
|||||
| Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 12 Всего: 14 |
Только operator< лучше определять как не член класса.
|
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Непойму никак.
Слушайте подскажите вот что, есть-ли что-то другое в C++ для моего случая. У меня (в данном случае это сервер) нужно сделать что-то вроде динамического списка, так как обычный массив не подходит в силу того что клиент может находится в середине массива. (или легче уж выкручиваться с массивом) И если ничего хорошего нету, то покажите пожалуйста как мне вставить поправки приведенные выше в мой код что-бы он запустился и стал рабочим. Это сообщение отредактировал(а) Ak47black - 17.10.2010, 13:30 |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Никто с такими структурами дынных не работал?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
скорей всего многим просто лень вникать в суть проблемы, которую вы довольно таки, на мой взгляд, туманно описали .. |
|||
|
||||
| Ak47black |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Да вот незнаю, как более яснее преподнести Есть код
получаю ошибки
из ошибок видно что проблема на строке
и
Немогу понять как исправить. Ошибка появилась из-за объявления set<int> clients; на set<clstruct> clients; и переправки других частей связанных с этим соответственно. Добавлено @ 18:51 структура clstruct мне нужна для хранения переменной DIR* вместе с sock для каждого клиента. Изза того что в set нельзя изменять данные после вставки, то пытаюсь хранить в структуре clstruct переменную DIR **d которая указывает на ячейку в памяти в который хранится истинный DIR* который я меняю *it->d = opendir(buf+1); на 104 строке Добавлено через 5 минут и 58 секунд Готов ответить на любую информацию по этому примеру Добавлено через 7 минут и 43 секунды В использовании и понимании шаблонов, увы не силён. Это сообщение отредактировал(а) Ak47black - 17.10.2010, 18:51 |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "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. |