为什么这段c ++没有找到struct member'filename'?

use*_*108 0 c++ struct const vector

            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";
            }
Run Code Online (Sandbox Code Playgroud)

编译给我以下错误:

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’
Run Code Online (Sandbox Code Playgroud)

AFAICS i是恒定的internal_file_entry结构,其标题代码住在这里的开源项目libtorrent.我只是第一次看C++但我不能为我的生活解决为什么上面的调用i.filename()在编译时失败了?

Jos*_*eld 5

i是一个指向的迭代器internal_file_entry- 它必须被解除引用.访问filename如下:

i->filename
Run Code Online (Sandbox Code Playgroud)

这相当于:

(*i).filename
Run Code Online (Sandbox Code Playgroud)