class FileObject
{
public:
set<string> owners;
.
.
.
};
在这个函数中,我对这一行有问题:for(std::set it=owners.begin();它!=owners.end();它++)。
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<_迭代程序L,_Container>'-没有为后缀"++"[-fpermission]声明"operator++(int)"-"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<_迭代程序,_Container>'-"std::set>"不是从"const__gnu_cxx::new_allocator<_Tp>'-"std::set>"不是从"const std::multiset<_关键字,_比较,_全部>>-"std::set>"不是从"const std::istream_iterator<_Tp,_CharT,_Traits,_Dist>'-"std::set>::迭代器{aka std::_Rb_tree_const_iterator>}"不是从"const"派生的std::设置<_关键字,_比较,_全部>>-"std::set>"不是从"const std::reverse_iterator<_迭代程序>'-"std::set>"不是从"const std::pair<_T1,_T2>'-"std::set>"不是从"const std::fpos<_StateT>'-候选人是:-从"std::set>::迭代器{aka std::_Rb_tree_const_iterator>}"转换为非标量请求类型"std::set>"-"operator!="不匹配(操作数类型为'std::set>'和'std::set>::迭代器{akastd::_Rb_tree_const_iterator>}')-"std::set>"不是从"const std::istreambuf_titerator<_CharT,_Traits>'-不匹配的类型"const_CharT*"one_answers"std::set>"-"std::set>"不是从"const std::basic_string<_CharT,_Traits,_Alloc>'-"std::set>"不是从"const std::allocater<_CharT>'
it
的类型应该是set<string>::const_iterator
或set<string>::iterator
,而不是set<string>
。
如果您使用的是C++11,您可以只使用auto
。:-)
此外,作为一种风格,更喜欢按值返回messageToPrint
,而不是使用out参数。