Базовый класс «Интерпретатор» не имеет неразрушающих виртуальных функций

0

Это часть моего кода:

class Interpreter {
public:
    Interpreter() : m_id_counter(0) {}
    virtual ~Interpreter() {}
protected:
    int32 m_id_counter;
};

class ManCal : public Interpreter {
public:
    ManCal() {}
};

и с предупреждением:

Warning: Base class 'Interpreter' has no non-destructor virtual functions

Какова причина?

  • 0
    Он пытается сказать вам, что вы, вероятно, не хотели, чтобы деструктор был virtual . Почему вы сделали это virtual ?
  • 0
    В коде нет ничего плохого, хотя трудно представить вариант использования базового класса, в котором есть виртуальный деструктор, но нет других виртуальных функций-членов.
Показать ещё 5 комментариев
Теги:
lint

1 ответ

2

В коде нет ничего плохого. Предупреждение просто информирует вас о том, что вы создали отношение наследования, которое не имеет возможности переопределить поведение базового типа. Часто это является признаком того, что наследование здесь неуместно, и другой шаблон, подобный "имеет", будет более уместным между ManCal и Interpreter

Ещё вопросы

Сообщество Overcoder
Наверх
Меню