help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Assignment error with user defined vector container


From: Maxim Yegorushkin
Subject: Re: Assignment error with user defined vector container
Date: 12 Nov 2006 23:29:16 -0800
User-agent: G2/1.0

Raghuram N K wrote:

> Following program compiles and executes successfully in windows with
> DevCPP compiler. When I compile the same in Linux with 'g++323' compiler
> I get following assignment error:
>
> cannot convert `__gnu_cxx::__normal_iterator<DailyTemp*,
> std::vector<DailyTemp, std::allocator<DailyTemp> > >' to `DailyTemp*'
> in assignment
>
> I believe the overloaded assignment operation is unable to recognize the
> iterator. Can anyone help me to over come this issue?

This is because iterators may well be not plain pointers. Newer gcc's
use __normal_iterator<> instead of plain pointers for the standard
containers. If you look in
/usr/include/c++/3.2.3/bits/stl_iterator.h:565

  // This iterator adapter is 'normal' in the sense that it does not
  // change the semantics of any of the operators of its iterator
  // parameter.  Its primary purpose is to convert an iterator that is
  // not a class, e.g. a pointer, into an iterator that is a class.
  // The _Container parameter exists solely so that different
containers
  // using this template can instantiate different types, even if the
  // _Iterator parameter is the same.
  ...
  template<typename _Iterator, typename _Container>
    class __normal_iterator
  ...

[]

> dummy1 = found; //<<ERROR: Assignment fails with g++ >>

This may fix the error, but I haven't perused you code well enough:

dummy1 = &*found;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]