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

List:       kde-core-devel
Subject:    Re: gcc -Woverloaded-virtual
From:       David Faure <faure () kde ! org>
Date:       2007-11-21 15:18:37
Message-ID: 200711211618.37712.faure () kde ! org
[Download RAW message or body]

On Wednesday 21 November 2007, Matthias Kretz wrote:
> On Wednesday 21 November 2007, David Faure wrote:
> > What we're missing is a way to say "yes I wanted to hide this method from
> > the base class"...
> 
> Hiding a method from a base class is not possible anyway as you can still cast 
> down and then call the method. It kind of works for value based classes since 
> those are normally not casted down, but for all pointer-based (i.e. QObject) 
> classes I believe you should not hide a method and get a warning if you do 
> (also for non-virtual functions).

Well that's the theory :)
In practice the base class method doesn't always make sense. Example:

/d/kde/src/4/kdelibs/kdeui/actions/kselectaction.h:217: warning: ‘virtual void \
                KSelectAction::addAction(QAction*)' was hidden
/d/kde/src/4/kdelibs/kdeui/actions/krecentfilesaction.h:98: warning:   by ‘void \
KRecentFilesAction::addAction(QAction*, const KUrl&, const QString&)'

Sure you could call KSelectAction::addAction even on a KRecentFilesAction, but you \
don't want to... you want to associate a url with the action. This is documented, \
too.  /**
   * Adds \a action to the list of URLs, with \a url and title \a name.
   *
   * Do not use addAction(QAction*), as no url will be associated, and
   * consequently urlSelected() will not be emitted when \a action is selected.
   */
  void addAction(QAction* action, const KUrl& url, const QString& name);

So here the hiding is good... it's actually an example of why the hiding feature \
exists in the first place...

-- 
David Faure, faure@kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).


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

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