[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: gcc -Woverloaded-virtual
From:       Michael Pyne <michael.pyne () kdemail ! net>
Date:       2007-11-17 19:06:25
Message-ID: 200711171406.29228.michael.pyne () kdemail ! net
[Download RAW message or body]


On Saturday 17 November 2007, André Wöbbeking wrote:
> On Friday 16 November 2007, Allen Winter wrote:
> >        -Woverloaded-virtual (C++ only)
> >            Warn when a function declaration hides virtual functions
> > from a base class. For example, in:
> >
> >                    struct A {
> >                      virtual void f();
> >                    };
> >
> >                    struct B: public A {
> >                      void f(int);
> >                    };
> >
> >            the "A" class version of "f" is hidden in "B", and code
> > like:
> >
> >                    B* b;
> >                    b->f();
> >
> >            will fail to compile.
>
> It can be very handy but there're too many false positives, e.g. if
> virtual void A::f(int) also exists. IMO too many to make this a default
> option.

If virtual void A::f(int) exists then B::f() is still hidden, so the warning 
still applies.  I honestly didn't know the function hiding issue was really 
this bad but it is.

If you want to make A::f() accessible in B you have to do something like:

struct B : public A {
  using A::f;

  void f(int) { ... }
};

Regards,
 - Michael Pyne

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic