f



Why can't push a "const auto_ptr" into a "vector"

Hi,
I want to push a const auto_ptr into a vector, but the compile reports
errors.
Below is the code.
  class Folder;
  class Result;
  class Results
  {
   public:
   int size(){return _Items.size();}
   const vector<const auto_ptr<Result> >& Items()const{return _Items;}
   Results();
   ~Results();
   private:
   vector<const auto_ptr<Result> > _Items;
  };

  Results::Results()
  {
   typedef list<const auto_ptr<Result> > ResultVector;
   Result* hdresult = new Result();
   auto_ptr<Result> hdptr(hdresult);
   _Items.push_back(hdptr);
  }

The compile reports "could not find a match for operator new(unsigned
long, auto_ptr<Result>*)" in "_construct.h".


There is another piece of code:
  map<string, const auto_ptr<Folder> > folderMap;
  Folder* folder = new Folder(FolderName);
  auto_ptr< Folder > folder_ptr(folder);
  folderMap.insert( make_pair(FolderName, folder_ptr) );

I think they are very similar, but the compile doesn't report errors
about this code.

What's wrong with my code? Thanks in advance.
0
bucherren (1)
10/22/2003 3:16:34 PM
comp.lang.c++ 49423 articles. 7 followers. Post Follow

1 Replies
752 Views

Similar Articles

[PageSpeed] 8

"bucher" <bucherren@hotmail.com> wrote in message news:79a6b6ad.0310220716.62546536@posting.google.com...
> Hi,
> I want to push a const auto_ptr into a vector, but the compile reports

Standard containers require operators that are copy constructable and
assignable.  Auto_ptr does not meet these constraints.

Further, you can't practically make a vector out of const things anyhow
(as opposed to pointer to const things) because a const object doesn't
meet the assignable requirement.


0
ron156 (1433)
10/22/2003 3:36:37 PM
Reply: