|
Boost : |
Subject: [boost] [ptr_container] ptr_map + abstract class = error
From: Ross Levine (ross.levine_at_[hidden])
Date: 2009-03-21 18:25:11
The following code does not compile in VS2008:
#include <boost/ptr_container/ptr_map.hpp>
class A
{
public:
virtual void is() = 0;
};
class B : public A
{
public:
virtual void is() {}
};
int main()
{
boost::ptr_map<int, A> c;
int i = 1;
c.insert(i, new B);
A& my_ref = c[1]; // error: cannot instantiate abstract class
}
It seems that using operator[] creates a new A for an unmatched key,
which creates an abstract instance. Using the find method works fine.
Should this be documented? The example in the documentation uses
operator[] on an ABC, and thus shouldn't compile either.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk