for (torrent_info::file_iterator i = t.begin_files();
i != t.end_files(); ++i, ++index)
{
int first = t.map_file(index, 0, 1).piece;
int last = t.map_file(index, i->size - 1, 1).piece;
std::cout << " " << std::setw(11) << i->size
<< " " << i.filename() << "[ " << first << ", "
<< last << " ]\n";
}
编译给出了以下错误:
error: ‘class __gnu_cxx::__normal_iterator<const libtorrent::internal_file_entry*, std::vector<libtorrent::internal_file_entry, std::allocator<libtorrent::internal_file_entry> > >’ has no member named ‘filename’
AFAICS i
是一个常量internal_file_entry
结构,其标题代码在开源libtorrent项目中存在here。我只是第一次看C ++,但我不能
我的生活解决了为什么上面对i.filename()
的调用在编译时失败的原因?
答案 0 :(得分:5)
i
是指向internal_file_entry
的迭代器 - 必须取消引用它。像这样访问filename
:
i->filename
这相当于:
(*i).filename