Как получить приведенный ниже пример кода, который компилируется и прекрасно работает для работы внутри класса?
Ниже код работает просто отлично
#include <iostream>
using namespace std;
typedef int (*IntFunctionWithOneParameter) (int a);
int function(int a){ return a; }
int functionTimesTwo(int a){ return a*2; }
int functionDivideByTwo(int a){ return a/2; }
void main()
{
IntFunctionWithOneParameter functions[] =
{
function,
functionTimesTwo,
functionDivideByTwo
};
for(int i = 0; i < 3; ++i)
{
cout << functions[i](8) << endl;
}
}
Таким образом, приведенный выше код работает нормально, но я хочу переместить его в класс в отдельный файл, аналогично приведенному ниже НЕРАБОЧНОЙ ИДЕЕ, где я получаю «неполный тип не допускается» ошибка в «functions [] =»;
class myClass {
private:
typedef int (*IntFunctionWithOneParameter) (int a);
int function(int a){ return a; }
int functionTimesTwo(int a){ return a*2; }
int functionDivideByTwo(int a){ return a/2; }
IntFunctionWithOneParameter functions[] =
{
function,
functionTimesTwo,
functionDivideByTwo
};
};
Поэтому мой вопрос - как мне заставить его работать внутри моего класса, где это ЕДИНСТВЕННОЕ место, где нужны функции, то есть мне нужен доступ к функциям в main () или других местах!
РЕДАКТИРОВАТЬ
Вот почему мне нужен "массив функций". Чтобы сэкономить время, затрачиваемое на «если» или, точнее, на «переключатели», когда я делаю программный (vst) синтезатор, и чем меньше времени затрачивается на обработку, тем больше нот (полифония c) пользователь может воспроизводить в любой момент время. И умножьте 44100 раз в секунду, которую выполняет функция, на 8 тональных генераторов, каждый из которых может иметь до 16 унисонных голосов, так что на самом деле нужная функция может вызываться до 5 644 800 раз в секунду на каждую сыгранную ноту! Точная функция, необходимая внутри этой основной l oop, известна ДО ввода l oop и изменяется ТОЛЬКО, когда пользователь настраивает ручку, поэтому я хочу избегать переключений и переключателей. Теперь, если бы только одна функция периодически менялась, я мог бы просто дублировать основной l oop с вариациями для каждой возможной функции, ОДНАКО основная обработка звука l oop имеет несколько областей, каждая из которых имела множество постоянно растущих возможных функций. каждая из которых изменяется ТОЛЬКО при смене пользователем различных ручек. Поэтому, хотя я мог бы, я не собираюсь делать 5 * 20 * 23 (и растущих) различных версий основного l oop, чтобы избежать переключателей if и.