gcc Woverloaded-virtual warnings

Следующий код C++ я считаю правильным, но выдает некоторые предупреждения при компиляции с "-Woverloaded-virtual", является ли предупреждение подделкой или в этом коде есть реальная проблема?

Если это фиктивное предупреждение, что я могу сделать, чтобы его избежать, определить все виртуальные варианты исключений в производных, чтобы избавиться от предупреждения, но, возможно, это лучшее решение

Команда G++:

   g++ -c -Woverloaded-virtual test.cpp 
test.cpp:22:18: warning: ‘virtual void intermediate::exception(const char*)’ was hidden [-Woverloaded-virtual]
test.cpp:32:18: warning:   by ‘virtual void derived::exception()’ [-Woverloaded-virtual]

Код C++

using namespace std;

class base
{
public:

    virtual void exception() = 0;
    virtual void exception(const char*) = 0;
};

class intermediate : public base
{
public:

    virtual void exception()
    {
    cerr << "unknown exception" << endl;
    }

    virtual void exception(const char* msg)
    {
    cerr << "exception: " << msg << endl;
    }
};

class derived : public intermediate
{
public:

    virtual void exception() 
    { 
        intermediate::exception("derived:unknown exception");
    }
};
18
задан ollydbg23 6 December 2015 в 13:17
поделиться