несколько маркеров на итераторе множества

0
class FileObject
{
public:
set<string> owners;
.
.
.
};

в этой функции у меня проблема с этой строкой: for (std :: set it = owner.begin(); it! = owner.end(); it++).

void FileObject::viewFileDetails(string* messageToPrint)
{
    *messageToPrint = fileName;
    *messageToPrint += ", ";
    if(status == 0)
    {
        *messageToPrint += convertInt(countVersion);
    }
    else
    {
        *messageToPrint += userCheckedOut;
    }
    *messageToPrint += " (owners: ";
    unsigned int i=0;

    for(std::set<string> it = owners.begin(); it != owners.end(); it++)
    {
        *messageToPrint += *it;
        if( i != owners.size())
        {
            *messageToPrint += ", ";
        }
        else
        {
            *messageToPrint += ")";
        }
        i++;
    }

}

это ошибка:

Несколько маркеров в этой строке - 'std :: set>' не выведены из 'const __gnu_cxx :: __ normal_iterator <_IteratorL, _Container>' - no 'operator++ (int)', объявленный для postfix '++' [-fpermissive ] - 'std :: set>' не выводится из 'const std :: _ Rb_tree <_Key, _Val, _KeyOfValue, _Compare, _Alloc>' - 'std :: set>' не выводится из 'const std :: vector < _Tp, _Alloc> '-' std :: set> 'не выводится из' const std :: _ Rb_tree_iterator <_Tp> '-' std :: set> 'не выводится из' const std :: list <_Tp, _Alloc> '-' std :: set> 'не выводится из' const std :: _ List_iterator <_Tp> '-' std :: set> 'не выводится из' const __gnu_cxx :: __ normal_iterator <_Iterator, _Container> '-' std :: set> 'не выводится из' const __gnu_cxx :: new_allocator <_Tp> '-' std :: set> 'не выводится из' const std :: multiset <_Key, _Compare, _Alloc> '-' std :: set> 'не выводится из' const std :: istream_iterator <_Tp, _CharT, _Traits, _Dist> '-' std :: set> :: iterator {aka std :: _ Rb_tree_const_iterator>} 'не выводится из' const std:: набор <_key, _Compare, _Alloc> '-' std :: set> 'не выводится из' const std :: reverse_iterator <_Iterator> '-' std :: set> 'не выводится из' const std :: pair <_T1, _T2> '-' std :: set> 'не выводится из' const std :: fpos <_StateT> '- кандидаты: - преобразование из' std :: set> :: iterator {aka std :: _ Rb_tree_const_iterator>} 'в non -scalar type 'std :: set>' required - нет соответствия для 'operator! =' (типы операндов: 'std :: set>' и 'std :: set> :: iterator {aka std :: _ Rb_tree_const_iterator>}' ) - 'std :: set>' не выводится из 'const std :: istreambuf_iterator <_CharT, _Traits>' - несогласованные типы 'const _CharT *' и 'std :: set>' - 'std :: set>' это не выводится из 'const std :: basic_string <_CharT, _Traits, _Alloc>' - 'std :: set>' не выводится из 'const std :: allocator <_CharT>'

Теги:
set
iterator
stl

1 ответ

0
Лучший ответ

Тип it должен быть set<string>::const_iterator или set<string>::iterator, не set<string>.

Если вы используете С++ 11, вы можете просто использовать auto. :-)

Кроме того, в качестве стиля предпочитайте возвращать ваше messageToPrint по значению, а не использовать параметр out.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню