Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Разыменование итератора?  (Прочитано 10565 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« : 25-02-2005 18:53 » 

Вот объясните вот такую штуку...
Код:

class _node
{
vector<_node> *dirlist;
...
};

_node* _node::Contains(CString Name)
{
    vector<_node>::iterator i;
    if (Name=="") return NULL;
    if (dirlist==NULL) return NULL;
    if (dirlist!=NULL)
        for (i=dirlist->begin(); i!=dirlist->end(); i++)
            if (i->name.CompareNoCase(Name)==0) return &((*dirlist).at(l));
    return NULL;
}
Вот там, где return &(всякаяфигня)... Как правильно возвратить указатель на элемент?
Надеюсь, окружение понятно.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 25-02-2005 19:29 » 

Святой Нортон!
Оно заработало! Вчера вечером не компилилось, а сегодня прошло...
Магнитные бури... Улыбаюсь
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 25-02-2005 20:02 » 

Лёха, ты в сеть включил? Улыбаюсь))
Записан

Serega
Гость
« Ответ #3 : 05-03-2005 22:24 » 

vector<_node> *dirlist;
а что это такое ? Быть такого не может
Код:
    if (dirlist!=NULL)
        for (i=dirlist->begin(); i!=dirlist->end(); i++)
            if (i->name.CompareNoCase(Name)==0) return &((*dirlist).at(l));
как такой страх вообще заработал Жжешь
попробуй писать в стиле С++, наглядней получается
Код:
typedef vector<_node> node_container;
node_container dirlist;

class FindByName
{
CString name;
public:
FindByName(const CString& str) : name(str) {}

bool operator()(const _node& node)
{
return name.CompareNoCase(node.name) == 0;
}
}


_node* _node::Contains(CString Name)
{
node_container::iterator i = find(dirlist.begin(), dirlist.end(), FindByName(Name));
if( i != dirlist.end() ) return &(*i);
return NULL;
}
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #4 : 10-03-2005 16:16 » 

Серега, я примерно так тоже пробовал в первый раз. Автоматический кастинг вообще выдал кучу еггогов.
Вообще этот VC6 - просто искусственный интеллект какой-то.... Сам по себе решает - стоит перекомпилировать измененный файл или нет... Здесь была моя ладья...
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines