I am trying to compile this snippet of code. The error comes from the
Code:
typename std::vector<T>::const_iterator fileIterator;
But I am confused why I need typename and what the problem is. Here are the errors I am getting
Code:
interface.hpp:37: error: no match for ‘operator=’ in ‘fileIterator = ((interface<int>*)this)->interface<int>::files.std::vector<_Tp, _Alloc>::begin [with _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Alloc = std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]()’
/usr/include/c++/4.1.3/bits/stl_iterator.h:634: note: candidates are: __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >& __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >::operator=(const __gnu_cxx::__normal_iterator<const int*, std::vector<int, std::allocator<int> > >&)
interface.hpp:37: error: no match for ‘operator!=’ in ‘fileIterator != ((interface<int>*)this)->interface<int>::files.std::vector<_Tp, _Alloc>::end [with _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Alloc = std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]()’
chunker.cpp:13: instantiated from here
interface.hpp:38: error: no match for ‘operator+’ in ‘((interface<int>*)this)->interface<int>::files.std::vector<_Tp, _Alloc>::begin [with _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Alloc = std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >] + fileIterator’
Code:
template <class T>
void interface<T>::chunk(size_t block_size){
//just creates one big chunk for now also reads at one large interval
char *inbuff;
int size;
T in;
typename std::vector<T>::const_iterator fileIterator=files.begin();
for(fileIterator=files.begin();fileIterator!=files.end();fileIterator++){
saga::filesystem::file f(saga::url(files.begin+fileIterator), saga::filesystem::Write | saga::filesystem::Create);
while(f >> in){
std::cout << in << std::endl;
}
}
Thanks for your help :-D