class FileObject
{
public:
set<string> owners;
.
.
.
};
在这个函数中我对这一行有疑问:for(std :: set it = owners.begin(); it!= owners.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&gt;'不是源于'const __gnu_cxx :: __ normal_iterator&lt; _IteratorL,_Container&gt;' - 没有'operator ++(int)'为postfix' ++'[-fpermissive]声明 - 'std :: set&gt;'不是源自'const std :: _ Rb_tree&lt; _Key,_Val,_KeyOfValue,_Compare,_ Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: vector&lt; _Tp,_Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: _ Rb_tree_iterator&lt; _Tp&gt;' - 'std :: set&gt;'不是源自'const std :: list&lt; _Tp,_Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: _ List_iterator&lt; _Tp&gt;' - 'std :: set&gt;'不是源于'const __gnu_cxx :: __ normal_iterator&lt; _Iterator,_Container&gt;' - 'std :: set&gt;'不是源于'const __gnu_cxx :: new_allocator&lt; _Tp&gt;' - 'std :: set&gt;'不是源自'const std :: multiset&lt; _Key,_Compare,_Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: istream_iterator&lt; _Tp,_CharT,_Traits,_Dist&gt;' - 'std :: set&gt; :: iterator {aka std :: _ Rb_tree_const_iterator&gt;}'不是从'const派生的 std :: set&lt; _Key,_Compare,_Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: reverse_iterator&lt; _Iterator&gt;' - 'std :: set&gt;'不是源于'const std :: pair&lt; _T1,_T2&gt;' - 'std :: set&gt;'不是源于'const std :: fpos&lt; _StateT&gt;' - 候选人是: - 从'std :: set&gt; :: iterator {aka std :: _ Rb_tree_const_iterator&gt;}'转换为非标量 输入'std :: set&gt;'要求 - 'operator!='不匹配(操作数类型是'std :: set&gt;'和'std :: set&gt; :: iterator {aka std :: _ Rb_tree_const_iterator&gt;}') - 'std :: set&gt;'不是源于'const std :: istreambuf_iterator&lt; _CharT,_Traits&gt;' - 不匹配的类型'const _CharT *'和'std :: set&gt;' - 'std :: set&gt;'不是源自'const std :: basic_string&lt; _CharT,_Traits,_Alloc&gt;' - 'std :: set&gt;'不是源于'const std :: allocator&lt; _CharT&gt;'
答案 0 :(得分:0)
it
的类型应为set<string>::const_iterator
或set<string>::iterator
,而不是set<string>
。
如果您使用的是C ++ 11,则可以使用auto
。 : - )
此外,作为一种风格问题,您希望按值返回messageToPrint
,而不是使用out参数。