The following code produces a wrong warning:

class A {
public:
        virtual ~A() {};
        virtual void Update( int ) {};
protected:
        virtual void Update( int, float ) {};
};

class B : public A {
public: 
        virtual void Update( int ) {};
};

6 C:\Dev-Cpp\Projects\test-stlport\main_7.cpp [Warning] 'virtual void
A::Update(int, float)' was hidden 
11 C:\Dev-Cpp\Projects\test-stlport\main_7.cpp [Warning]   by 'virtual void
B::Update(int)' 

I thought the warnign was only supposed to happen, if B has no virtual in front
of the function "Update", which is inherited from A.

I am using:

Using built-in specs.
Target: i686-pc-mingw32
Configured with: /datal/gcc/gcc/configure --prefix=/datal/gcc/build/wingcc
--build=i686-pc-linux-gnu --host=i686-pc-mingw32 --target=i686-pc-mingw32
--enable-languages=c,c++,java --with-gcc --with-gnu-as --with-gnu-ld
--enable-threads=win32 --disable-nls --disable-win32-registry --disable-shared
--disable-debug --without-newlib --enable-libgcj --disable-java-awt --without-x
--enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enable-hash-synchronization --enable-sjlj-exceptions --enable-libgcj-multifile
--enable-libgcj-mingw-osapi=ansi
Thread model: win32
gcc version 4.0.0 20050324 (prerelease)

-- 
           Summary: wrong warning when using "-Woverloaded-virtual"
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: oliverst at online dot de
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20683

Reply via email to