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

B

bucher

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.
 
R

Ron Natalie

bucher said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top