Stuck on compile error
Gary Cote
gcote@transat-tech.com
Fri Jan 16 23:08:00 GMT 2004
I'm upgrading from gcc 2.96 to gcc 3.2.3, fixing
the various compiler warnings and errors in our
existing code base. One error has got me stumped.
Can anyone please tell me what's wrong with this?
I've boiled it down to its essential elements.
-------------
#include <vector>
using namespace std;
class ttiAucTriplet {
int i;
};
typedef vector<ttiAucTriplet> tVec;
void foo() {
tVec tripletVec_;
int numTriplets = 0;
tripletVec_.erase(tripletVec_.begin(), &tripletVec_[numTriplets]);
}
---------------
[root@ipc wgmm]# gcc foo.cpp
foo.cpp: In function `void foo()':
foo.cpp:15: no matching function for call to `std::vector<ttiAucTriplet,
std::allocator<ttiAucTriplet> >::erase(
__gnu_cxx::__normal_iterator<ttiAucTriplet*, std::vector<ttiAucTriplet,
std::allocator<ttiAucTriplet> > >, ttiAucTriplet*)'
/usr/include/c++/3.2.3/bits/stl_vector.h:647: candidates are:
__gnu_cxx::__normal_iterator<_Tp*, std::vector<_Tp, _Alloc> >
std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<_Tp*,
std::vector<_Tp, _Alloc> >) [with _Tp = ttiAucTriplet, _Alloc =
std::allocator<ttiAucTriplet>]
/usr/include/c++/3.2.3/bits/stl_vector.h:670:
__gnu_cxx::__normal_iterator<_Tp*, std::vector<_Tp, _Alloc> >
std::vector<_Tp, _Alloc>::erase(__gnu_cxx::__normal_iterator<_Tp*,
std::vector<_Tp, _Alloc> >, __gnu_cxx::__normal_iterator<_Tp*,
std::vector<_Tp, _Alloc> >) [with _Tp = ttiAucTriplet, _Alloc =
std::allocator<ttiAucTriplet>]
I suspect it has something to do with the return type.
vector::erase() actually returns an iterator, which
appears to be ignored here. I've tried assigning the
return value of the function to a temporary iterator,
but that didn't seem to help any.
Thank in advance.
--
Gary Cote
gcote@transat-tech.com
More information about the Gcc-help
mailing list