changes between 3.4 and 4.1.2 / Problem with endl overload

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Users,

i've got a problem with the current gnu compiler.
Let me discribe my situation:

My projekt compiles under 3.4 very well.
It has an overload funktion in a class named ABA_Ostream for the std::endl function with the functionality that in dependence of a flag set in a  config-file the output will be written in std::out and/ or to a local file.
In this case, of course, only the endl command.
 
the headerfile looks like that:

class  ABA_OSTREAM:public ostream,public ABA_ABACUSROOT{
    public:
       ....
 friend ABA_OSTREAM& endl(ABA_OSTREAM &o);
       ....
private:

      /*! \brief The ``real'' stream associated with our output stream 
       *  (usually \a cout or \a cerr).
       */
      ostream  &out_;

      /*! \brief If \a true, then output is written to the stream \a out_,
       *         otherwise it is suppressed.
       */
      bool      on_;

      /*! \brief If \a true_, then output is also written to the
       *         log stream \a *log.
       */
      bool      logOn_;

      /*! A pointer to a stream associated with the log file.
       */
      ofstream *log_;
 -------------------------------
the sourcecode is here:
ABA_OSTREAM& endl(ABA_OSTREAM &o)
  {
    o << '\n';
    if (o.on_) o.out_ << flush;
    if(o.logOn_) *(o.log_) << flush;
    return o;
  }


-------------------------------
When i try to compile with the version 4.1.2. there occurs a lot of errors, because the endl function is not found.
...............................
g++-4.1  -I./Include -DABACUS_SYS_LINUX -DABACUS_COMPILER_GCC34 -Wall   -O3   -c sources/lp.cc -o tmp/linux20-gcc41/lp.o
./Include/abacus/array.inc: In member function 'const ABA_ARRAY<Type>& ABA_ARRAY<Type>::operator=(const ABA_BUFFER<Type>&)':
./Include/abacus/array.inc:159: error: no match for 'operator<<' in '(((ABA_ARRAY<Type>*)this)->ABA_ARRAY<Type>::glob_->.ABA_GLOBAL::err() << "size of ABA_ARRAY too small.") << std::endl'
./Include/abacus/ostream.h:93: note: candidates are: ABA_OSTREAM& ABA_OSTREAM::operator<<(char)
./Include/abacus/ostream.h:94: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(unsigned char)
./Include/abacus/ostream.h:95: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(signed char)
./Include/abacus/ostream.h:96: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(short int)
./Include/abacus/ostream.h:97: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(short unsigned int)
./Include/abacus/ostream.h:98: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(int)
./Include/abacus/ostream.h:99: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(unsigned int)
./Include/abacus/ostream.h:100: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(long int)
./Include/abacus/ostream.h:101: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(long unsigned int)
./Include/abacus/ostream.h:102: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(float)
./Include/abacus/ostream.h:103: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(double)
./Include/abacus/ostream.h:104: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(const char*)
./Include/abacus/ostream.h:118: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(ABA_OSTREAM& (*)(ABA_OSTREAM&))
./Include/abacus/ostream.h:119: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(const ABA_STRING&)
./Include/abacus/ostream.h:120: note:                 ABA_OSTREAM& ABA_OSTREAM::operator<<(const ABA_TIMER&) 
.....................................
I tried everything.
1. replace '<<endl' with '<<std::endl' 
This will be accepted under 3.4 but not under 4.1 
(not defined in that scope)
2. explicit ABA_Ostream::endl.
the same error message 

3.the last test with std::endl(streamname) was accepted by both versions.
But this includes the normal behavior of the std::endl function and not the overloaded endl-function.

So i would be very glad, if anyone has an idea or a hint for my (silly) Problem.  
Or do you know any changes between 3.4 and 4.1.2 that belongs to my problem?

Greetings

Mark Sprenger

-- 
"Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux