0
            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’

AFAICSiは定数internal_file_entry構造体であり、そのヘッダーコードはオープンソースのlibtorrentプロジェクトにあります初めてC++を見ているだけですi.filename()が、コンパイル時に上記の呼び出しが失敗する理由を一生理解できません。

4

1 に答える 1

5

i-を指すイテレータですinternal_file_entry-逆参照する必要があります。filenameそのようなアクセス:

i->filename

これは次と同等です。

(*i).filename
于 2013-03-25T00:03:51.143 に答える