Re: passing const ptr argument

From: Ali Cehreli (acehreli_at_yahoo.com)
Date: 08/11/04


Date: Wed, 11 Aug 2004 01:50:19 -0700

On Wed, 11 Aug 2004 10:06:54 +0200, Anthony wrote:

> I want to write protect an argument that is passed by reference.
> But I still want to be able to call members of that argument.

This means that you can call only const member functions of those
objects.

> E.g. code (bottum) will gives the following compiler error:
> writeProtEvt.cpp: In member function `virtual void A::print(const B*)':
> writeProtEvt.cpp:24: error: passing `const B' as `this' argument of `virtual
> void B::print()' discards qualifiers
>
> Can anyone explain how to do this the right way?
>
> thanks in advance,
> Anthony Lansbergen
>
> // -------------------------------------------------------------------------
> ---
> #include <ostream.h>
> Class B
> {
> public:
> virtual void print()
> {
> cout << "printB" << std::endl;
> }
> };
>
> class A
> {
> public:
> virtual void print(const B* b)
> {
> cout << "printA" << std::endl;
> b->print();
> }
> };

Both of those member functions should be declared as const because
they don't modify the object:

         virtual void print() const // <---
         {
             /* ... */
         }

>
> main()

main returns 'int' and it must be specified:

int main()

Ali



Relevant Pages