ptr_map<int, T> where T has no default constructor because its private members are const
hi,
i can build a map
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users- bounces@lists.boost.org] On Behalf Of e r Sent: Monday, August 13, 2007 6:23 PM To: boost-users@lists.boost.org Subject: [Boost-users] ptr_map
where T has no default constructor because its private members are const hi,
i can build a map
, but not a boost::ptr_map . could someone please help? thank you,
e.
#include
using std::map; using std::cout; using std::endl;
class A{ public: A(double x_):x(x_){}; const double x; };
int main(){
map
map_A; //cannot use map //because A() not defined //why? because A has const members. A a(0.0); map_A[0]=new A(0.0);//fine
boost::ptr_map
ptr_map_A; ptr_map_A[0]=new A(0.0);//not fine return 0; };
I don't know for sure, but this may be disallowed for exception safety. In any case this should work: unsigned int key = 0; ptr_map_A.insert(key, new A(0.0)); "insert" also has the advantage in that the map doesn't have to create an empty value or null-pointer entry) before the assignment. -- Bill --
participants (2)
-
Bill Buklis
-
e r