Объявление предиката в коде использующего метода
От: takoReinolds  
Дата: 18.01.10 13:53
Оценка:
Вкратце и очень иллюстративно так:

Почему не получается использовать такой код:

int main(int argc, char **argv)
{
    list< string > strings;
    strings.push_back("hello"); strings.push_back("world"); strings.push_back("from"); strings.push_back("zealot");

    struct wordPrinter { void operator ()(const string& word) { cout << word.c_str() << "\t"; } };    for_each(strings.begin(), strings.end(), wordPrinter());

    return 0;
}


а вот если описание структуры — предиката вынести из функции — запросто

struct wordPrinter { void operator ()(const string& word) { cout << word.c_str() << "\t"; } };

int main(int argc, char **argv)
{
    list< string > strings;
    strings.push_back("hello"); strings.push_back("world"); strings.push_back("from"); strings.push_back("zealot");

    for_each(strings.begin(), strings.end(), wordPrinter());

    return 0;
}


и просто структуры или объединения с битовыми полями прямо в функции объявляю — всё в порядке
я в недоумении
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.