Следующий код 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");
}
};