Глупые вопросы от Fduch - страница 4

 
Integer >>:

Интересно, а эти 50000 функций вы вручную набрали?\

Нет, я собираюсь программно сгенерировать эти 50 000  ф-ций.


Integer >>:

Есть не указатели на функции, а вызов функций по адресу. Но всеравно надо будет 50000 строк кода для получения адресов. Есть такая фича, как вычисления кода, на С++ не знаю как, я с ним не очень дружу, например на JavaScript оператор Eval() (кажется так). Если ограничится только mql4, надо написать срипт вспомогательный для генерации кода пусть железная машина напечатает в файл код вызова 50000 функций.

С файлом неплохой вариант, но было бы намного удобней вызывать ф-ции по адресу. В этом и основная проблема.. Может, можно как-то в MQL4\C++ составить массив адресов функций в памяти чтобы к ним обращаться напрямую по адресу, без анализа кода по файлу и switch?

Я думал, возможно нечто вроде этого в С++:

//Пример ф-ций
double sum(double a1,double a2)
{  
    return(a1+a2);
}
double difference(double a1,double a2)
{ 
    return(a1-a2); 
}
//Указатель
double* k[2](double,double);

.....

k[0]=sum;k[1]=difference;

Но компилятор разубедил меня.. Выдает ошибку, array element type cannot be function

 

Хм, нашел решение проблемы на С++:

//Объявляем структуру
struct a1
{
   //В структуре объявляем указатель на ф-цию
   double* adress(double,double);
};
//А потом просто объявляем массив этих структур
a1 c[50000];
//В итоге получается массив структур, в каждой из которых c[k].adress=funct можно записать
//указатель на ф-цию

Наверное, программно неграмотно, однако работает..

 
Fduch >>:

Хм, нашел решение проблемы на С++:

Наверное, программно неграмотно, однако работает..

//А так не проще?

typedef double (*PointerToFunction) ( double, double );


PointerToFunction ArrayOfFunctions[50000];

Причина обращения: