Inconsisten error messages on const pointers

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

 



In the example below the following two statements seem to be inconsistent:
  1:   cout << "      " << endl << cell1->dump(); 
  2:   this->message += cell1->dump(); 

1: produces the error message
     SlipException.h: In member function ‘void slip::SlipException::log()’:
    In file included from SlipCell.h:49:0,
                 from SlipDatum.h:269,
                 from SlipOp.h:22,
                 from SlipStringOp.h:12,
                 from SlipStringOP.cpp:11:
    SlipException.h:29:79: error: passing ‘const slip::SlipCellBase’ as ‘this’ 
argument of ‘virtual std::string slip::SlipCellBase::dump()’ discards qualifiers

With 2: there is no diagnostic message. Any reason why?


===============================================================

[code]
# include <exception>
# include <string>
# include <iostream>
# include <stdlib.h>
# include "SlipDef.h"
# include "SlipErr.h"
# include "SlipCellBase.h"

namespace slip {
   
   class SlipException : public exception {
   private:
      void log() { cout << "error " << message; 
                   SlipCellBase* castCell1 = const_cast<SlipCellBase*>(cell1);
                   SlipCellBase* castCell2 = const_cast<SlipCellBase*>(cell2);
                   if (cell1 != NULL) cout << "      " << endl << 
cell1->dump();  // error
                   if (cell2 != NULL) cout << "      " << endl << 
castCell2->dump();
                   cout << endl << flush;
                 }

   protected:
      const SlipCellBase* cell1;
      const SlipCellBase* cell2;
      string  message;
      SlipException() { };

   public:
      
      SlipException(SlipErr::Error message, SlipCellBase* cell1) 
                   : message(constructMessage(message, "", ""))
                   , cell1(cell1)
                   , cell2(NULL) {
         this->message += cell1->dump();  // no error
         log();
      }; // SlipException(SlipErr::Error message, SlipCellBase* cell1) 
      
     virtual const char* what() const throw() {
        return message.c_str();
     }; // virtual const char* what() const throw();
      
      ~SlipException() throw() { }
   }; // class SlipException
[/code]




[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