Следующий код на С++, который, по моему мнению, верен, но выдает некоторые предупреждения при компиляции с помощью "-Woverloaded-virtual", является ли фиктивный предупреждение или существует реальная проблема с этим кодом?
Если это ложное предупреждение, что я могу сделать, чтобы избежать этого, определите все исключения виртуальных вариантов в производных get rids предупреждения, но, возможно, это лучшее решение
Команда 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]
Код С++
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");
}
};