Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > std::list


Автор: Anze 26.11.2007, 14:21
Вобщем возник такой вопрос.
Раньше (около двух лет назад), был написан такой код:

Код

std::list<Button *>::iterator Dialog::GetButton(std::string caption)
{
    for(std::list<Button *>::iterator i = buttons.begin(); i!=buttons.end(); ++i)
        if ((*i)->GetName() == caption)
            return i;
    return 0;
}

Он компилился и работал без нареканий в Visual Studio C7.1\gcc (FreeBSD\Linux), но с тех пор утекло немало времени. Теперь же код абсолютно не хочет компилироваться в Linux, ругаясь на то что нельзя возвращать 0.
В студии 8 тоже ругается, но есть маленький нюанс. При включённой опции /MT тоже ругается на это, но при включённой опции /MTd (тоже самое только в дебаг режиме), всё проходит без ошибок. 

Подскажите как быть?

Автор: JackYF 26.11.2007, 14:51
Цитата(Anze @  26.11.2007,  14:21 Найти цитируемый пост)
std::list<Button *>::iterator

Цитата

typename std::list<Button *>::iterator

Автор: bel_nikita 26.11.2007, 15:09
Я бы переписал:
Код

typedef std::list<Button *> list_t;
list_t::iterator Dialog::GetButton(std::string caption)
{
    for(list_t::iterator i = buttons.begin(); i!=buttons.end(); ++i)
        if ((*i)->GetName() == caption)
            return i;
    return buttons.end();
}

Автор: JackYF 26.11.2007, 15:30
Цитата(bel_nikita @  26.11.2007,  15:09 Найти цитируемый пост)
list_t

А я бы нет, потому как слишком общее название, не отражающее того, что это за список и каких элементов, имхо.

Автор: bel_nikita 26.11.2007, 15:38
Цитата(JackYF @ 26.11.2007,  14:30)
А я бы нет, потому как слишком общее название, не отражающее того, что это за список и каких элементов, имхо.

Код
typedef std::list<Button *> buttons_list_t
 smile 

Автор: JackYF 26.11.2007, 15:53
Цитата(bel_nikita @  26.11.2007,  15:38 Найти цитируемый пост)
typedef std::list<Button *> buttons_list_t

принято  smile 

Автор: Anze 26.11.2007, 22:48
Спасибо, помогло ^_^

Автор: JackYF 26.11.2007, 23:05
Anze, пометь тему решённой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)