Рассмотрим базовый класс для производных классов, где базовый класс должен предлагать некоторые (полиморфные) методы, такие как перечислимые или перевернутые операторы для всех его производных. Эти операции НЕ должны модифицироваться производными классами для обеспечения правильного выполнения. Однако в то же время я хотел бы получить оценку - функция isError() в моем примере - необходимо, чтобы оператор был индивидуальным для подклассов и чистым виртуальным, чтобы он ДОЛЖЕН быть определен:C++ переопределяет конечные и чистые виртуальные методы
class mom
{
public:
virtual bool operator && (const mom&) const final
{
return this->isError() && p_rOther.isError();
}
pritave:
virtual bool isError() = 0;
};
Это не похоже на текущий стандарт, поскольку «чистая виртуальность» подразумевает необходимость для подклассов для реализации всех виртуальных функций базового класса, тогда как «окончательное» ключевое слово противоречит этой парадигме.
Любые предложения или идеи, как справиться с этим противоречием в re?
Извините, но я понятия не имею, о чем вы говорите. –
Чистая виртуальная функция должна быть переопределена - это не означает, что любые другие виртуальные функции должны быть. –
Речь идет о смешивании чистой виртуальности и «окончательных» методах в одном классе. Поскольку isError() является чисто виртуальным, мне нужно переопределить все виртуальные методы классов, которые не работают для «окончательного» oeprator. Это проблема, о которой я говорю. VS 2010 жаловался на эту комбинацию. Я тоже думал, как Майк Сеймур, но MS VS не скомпилировал это. – gilgamash