В этой строке в функции Execute
:
table[which]();
Вы не можете так его называть, потому что это не нормальная функция. Вы должны предоставить ему объект для работы, поскольку это указатель на функцию-член , а не указатель на функцию (есть разница):
(this->*table[which])();
Это сделает вызывающий объект таким, на который указывает указатель this
(тот, который выполняет Execute
).
Кроме того, при публикации ошибок обязательно указывайте строку, в которой происходит ошибка.