![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Да что мы на это несчастное ЦРТ набросились? Проблема-то совсем другом. Royan просто путается в указателях.
А свои-то классы ты хоть используешь? Или только МФЦ, АТЛ и ВинАПИ? Добавлено @ 13:54 В АТЛ есть ещё CAutoPtr. Тоже самое, что auto_ptr, но не ЦРТ!!! |
|||
|
||||
Vyacheslav |
|
||||||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Очень надеюсь, что "неокрепшие умы" прежде всего обратят на тип переменной, по отношению которой применен оператор ++. В противном случае, пускай отправляются учить С++, иначе и без STL можно дров наломать. Странно. Это понятно
А это нет ?
Ваш пример более неудачен Замену puch_back (втолкнуть сзади) на add_tail (вставить в хвост) мы пропускаем Но вот это
lpos - имеет тип long и следовательно это у Вас обычный индекс. Но тогда уж следовало написать проще и заодно задействовать перегрузку оператора []
А вот здесь вы совершенно правы. А потому куда бы лучше смотрелось
Не ясно, зачем отдавть итератор. Итератор - это лишь способ доступа к элементам контейнера. Нужно отдавать сам элемент. -------------------- С уважением, Вячеслав Ермолаев |
||||||||||||||||
|
|||||||||||||||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Vyacheslav
for(int i = 0; i <end;i++) это, конечно, ясно всем, тут с вами согласен. for(list< MyStruct>::iterator i = thelist.begin(); i != thelist.end(); i++) это - не понятно. оно прикидывается индексом, но таковым не является. lpos - имеет тип long и следовательно это у Вас обычный индекс. Но тогда уж следовало написать проще и заодно задействовать перегрузку оператора [] lpos - не обычный индекс, а ключ доступа (грубо говоря, указатель на некоторую структуру в списке, но по большому счету пользователю классов это по барабану). аналог - POSITION в mfc. перекрывать operator[] - смысла нет, зачем? синтаксис get c возвращением указателя значительно очевидней. отдавать итератор - нужно. Например, некая dll экспортит следующий набор функций:
что отдавать в качестве, если список реализован через STL? Естественно, что-то типа итератора (не сам объект, а ключ доступа к нему). А как? Да и вовсе маскировать доступ к списку под доступ к массиву - не естественно. All mr.Duda просьба не обижать, я его упомянул только как автора кода (типа его copyright) |
|||
|
||||
Олег М |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
С какой радости оно прикидывается индексом? Это итератор, он им и прикидывается.
Вот в этом-то и беда. Я так и не смог добится как из вектора получить указатель на массив. Наверное неглубоко копал?
А зачем ты приводишь тогда такие примеры? Повторюсь, что мы ушли в сторону. |
||||||
|
|||||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Ну вы народ и развели флад в топике ...
![]()
Именно разрабатывая свою библиотеку классов я и сталкиваюсь с большинством вопрсов, о которых иногда спрашиваю Вас - (участников форума). Мне интересен такой вопрос - в каких случаях возинкает упомянутая в этом а также в этом: http://forum.vingrad.ru/index.php?showtopic=25717 топике ошибка, (кроме уже описанных) -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
А что за ошибка-то? Ты её хоть выловил? |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
И все таки. Увидев эту запись, программист владеющий С++ в границах его стандарта (выделено мной) , сразу поймет, что здесь имелось ввиду
При этом в пределах поставленной задачи, здесь нет ни строчки лишнего кода. Следовательно лаконично и прозрачно для понимания на уровне знания стандарта. При этом не возникают вопросы типа : а что имелось ввиду под long lpos?, на которые дают ответы : Это аналог - POSITION в mfc. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Vyacheslav
да, от +, -, > и <, рябит в глазах ![]() если вы называете это читаемым кодом - нам обсуждать больше нечего. мы просто живем на разных планетах. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
А Вы считаете это нечитаемым кодом? Тогда действительно нечего обсуждать раз операция вывода в поток для у Вас вызыает затруднения, или Вам трудно понять приоритеты операций?
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Vyacheslav, AndyY прав. Это не код. Это понты. Лень ставить скобки? |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Это не понты. Скобки нужны для переопределения приоритетов. Если приоритеты ясны, так зачем скобки. Для "неокрепших умов" ? Нет, уж спасибо.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Vyacheslav
скобки нужны для экономии денег на этапе багфикса и модификации существующего кода. ![]() чтобы понять ваш код, мне понадобилось вникать примерно 3 секунды. При фиксе баг, когда в голове уже достаточно _важной_ информации, это может быть критичным. пример из жизни - все, конечно, знают алфавит и хорошо читают, но единицы могут читать текст написаный справа налево, и воспринимать его также, как нормальный. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
В общем замнем эту тему. Андрей, я прочел Ваш "Куда приводит GOTO" и понял, что мы действительно живем на разных планетах.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
2Vyacheslav
Нет не выловил. Это что-то типа выполнения макроса ASSERT() т.е. ошибка происходит в run-time. Фрагмент кода, который "продуцирует" это сообщение после применения оператора delete, приведен здесь: http://forum.vingrad.ru/index.php?showtopic=25717 в асмом первом сообщении. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |