Re: error with rootcint

From: Christian Holm Christensen <cholm_at_nbi.dk>
Date: Thu, 23 Feb 2006 17:02:55 +0100


On Thu, 2006-02-23 at 12:25 +0100, Axel Naumann wrote:
> Hi,
>
> this is a known limitation that we'll make vanish soon. Until then, use
> ClassDef(RangeError,0), or hide RangeError from rootcint:
>
> #ifdef __MAKECINT__
> class RangeError;
> #else
> class RangeError: public std::exception {
> // the real class definition
> ... };
> #endif

What about defining the destructor himself?

        > cat foo.hh
        #include <stdexcept>
        #include <cerrno>
        
        struct foo  : public std::exception
        {
        	std::string _msg;
        	foo(int eno) : _msg(strerror(eno)) {}
        	// Un-comment to succeed
        	// virtual ~foo() throw () {}
        	const char* what() const throw() { return _msg.c_str(); }
        };
        > rootcint -f foodict.cc -c foo.hh
        > g++ foodict.cc -c `root-config --cflags`
        foo.hh:5: error: looser throw specifier for 'virtual
        foo::~foo()'

Un-commenting the line marked above, solves the problem.

Yours,

-- 
 ___  |  Christian Holm Christensen 
  |_| |  -------------------------------------------------------------
    | |  Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
     _|           DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
    _|            Denmark                    Office: (+45) 353  25 404
 ____|   Email:   cholm_at_nbi.dk               Web:    www.nbi.dk/~cholm
 | |
Received on Thu Feb 23 2006 - 17:03:29 MET

This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:57 MET