Как узнать была ли переопредена фунция?
От: Andy_sh  
Дата: 15.09.10 08:20
Оценка:
Возник следующий вопрос: в С есть структура с указателями на функции (могут иметь нулевое значение)

struct {
  void (fn1*)(int);
  void (fn2*)(int);
}


Некая процедура получает указатель на структуру, проверяет не равен ли нулю указатель на функцию и вызывает ее.
Все просто и удобно. Есть желание преобразовать структуру в класс: создаем базовый класс с пустыми виртуальные функции и класс наследник в котором переопределяем необходимые функции

class base{
  virtual void fn1(int) {}
  virtual void fn2(int) {}
};

class deriv{
  void fn1(int) { ... }
};


Непонятен один момент: как определить что функция fn2 не была переопределена, т.е. вызывать ее не нужно и не нужны подготовительные операции.
Рассматривал вариант с указателем на член класса, но, как выяснилось, сравнивать такие указали нет возможности.
Может есть красивый вариант решения задачи или я все усложняю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.