Hello,
On Fri, 2 Feb 2001, Rene Brun wrote:
> Hi Victor,
>
> In a class member function declared const, you can call a non-const
> function of the class by a dirty cast. See example below.
>
> CBananaPlant::Function() const {
> ((CBananaPlant *)this)->SomeNonConstFunction();
> }
It is much better for this dirty trick to use C++ keyword const_cast:
CBananaPlant::Function() const {
const_cast<CBananaPlant*>(this)->SomeNonConstFunction();
}
That is C++ style of removing constness.
With best wishes,
Alexander.
>
> This is a dirty solution, clearly violating the intended security with const.
> You better solve the problem with const by making sure that all the class
> functions called from a const fonction are also const.
> Sometimes, this is useful.
>
> Rene Brun
>
>
> Victor Krylov wrote:
> >
> > Hello everybody,
> >
> > I have a class with some const members.
> > Somebody knows how to deliver from the warnings?
> >
> > BananaPlantCint.cxx: In method `void CBananaEvent::Streamer(class
> > TBuffer &)':
> > BananaPlantCint.cxx:258: warning: converting to `CBananaPlant *' from
> > `const CBananaPlant *' discards const
> > BananaPlantCint.cxx:258: warning: initializing non-const `CBananaPlant
> > *&' with `const CBananaPlant *' will use a temporary
> > BananaPlantCint.cxx:40: warning: in passing argument 2 of `operator
> > >>(TBuffer &, CBananaPlant *&)'
> >
> > Regards,
> > Viktor
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:35 MET