2013-03-25 46 views
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"; 
      } 

編譯給了我以下錯誤:爲什麼這段C++沒有找到struct成員'filename'?

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()以上調用在編譯時失敗?

+2

提領迭代器:'I-> filename'。 – us2012 2013-03-25 00:03:33

+1

'i'是'torrent_info :: file_iterator'而不是'internal_file_entry',它在你的代碼中說得很對,並且錯誤信息也告訴你它是一個迭代器。 – 2013-03-25 00:15:11

回答

5

i是一個迭代器,指向internal_file_entry - 它必須被解除引用。訪問filename像這樣:

i->filename 

這相當於:

(*i).filename 
相關問題