RV: assign shared_ptr to 0 in initialization list
Hi, I've been following this thread and been unable to do the same with: boost::shared_ptr< map<string,string> > () So I can't do: constructor ( boost::shared_ptr< map<string,string> > varName = boost::shared_ptr< map<string,string> > () ) The error I get is (why/how do I specify the missing params for map?): [cc] /home/bereng/blaseek/src/lib/cppToolkit/DBHelper.h:61: error: expected a,a or a...a before a>a token [cc] /home/bereng/blaseek/src/lib/cppToolkit/DBHelper.h:61: error: wrong number of template arguments (1, should be 4) [cc] /usr/lib/gcc/i386-redhat-linux/4.1.1/../../../../include/c++/4.1.1/bits/stl_ map.h:92: error: provided for atemplate<class _Key, class _Tp, class _Compare, class _Alloc> class std::mapa [cc] /home/bereng/blaseek/src/lib/cppToolkit/DBHelper.h:61: error: template argument 1 is invalid [cc] /home/bereng/blaseek/src/lib/cppToolkit/DBHelper.h:61: error: default argument missing for parameter 2 of aboost::shared_ptr<cppToolkit::ResultSet> cppToolkit::DBHelper::findObject(boost::shared_ptr<std::map<std::basic_strin g<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >
, std::string)a
Thanks a lot in advance. -----Mensaje original----- De: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org]En nombre de Scott Amort Enviado el: lunes, 14 de agosto de 2006 1:09 Para: boost-users@lists.boost.org Asunto: Re: [Boost-users] assign shared_ptr to 0 in initialization list Hi Scott, Thanks for the quick reply! On Sun, 2006-08-13 at 18:11 -0400, me22 wrote:
Instead of
if (writer_.get() == 0) { /* create default error writer */ } Why not just use if ( !writer_ ) { /* create default error writer */ } instead? This would work with ordinary pointers too.
Thanks, that is clearer!
What is the equivalent to:
Parser testParser(0);
Parser testParser( ErrorWriterPtr() ); // would work
I'd be tempted instead to replace the constructor definition with Parser(ErrorWriterPtr writer = ErrorWritePtr()) : writer_(writer) { } however, to be able to just say Parser testParser; if you don't want to specify the writer.
Perfect! Thanks again. Best, Scott _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Berenguer Blasi wrote:
Hi,
I've been following this thread and been unable to do the same with:
boost::shared_ptr< map<string,string> > ()
So I can't do:
constructor ( boost::shared_ptr< map<string,string> > varName = boost::shared_ptr< map<string,string> > () )
The error I get is (why/how do I specify the missing params for map?):
[...] I've no idea why this doesn't work; it seems like it should. Have you tried using a typedef for map<string, string> to make it easier for the compiler?
participants (2)
-
Berenguer Blasi
-
Peter Dimov