Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2010, 01:10   #1
kotjara2
 
Регистрация: 11.02.2010
Сообщений: 6
По умолчанию указатель на функцию.

Код:
typedef double (*pf) (double)
void FindA(pf func, double *pA,double a, double b, double h, int N)
{
      for (int i=1;i<=N;i++)
       {
         pA[i]=func(a+h*(i-1));
        }
}
double Main(double x)
{
 return sin(x);
}
FindA(Main,pA,a,b,h,N);// здесь ошибка, 1)сannot convert `double(*(_closure)(double)' to 'double (*)(double)`
2)type mismatch in parameter `func` (wanted `double (*)(double)`got `double (*(_closure)(double))(double)`)
помогите люди разобраться, прошу вас.почему компилятор здесь выдает ошибку.

Последний раз редактировалось Stilet; 11.02.2010 в 09:36.
kotjara2 вне форума Ответить с цитированием
Старый 11.02.2010, 09:35   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Ну так вам и пишет.
1. Не могу конвертировать - получил double(*(_closure)(double) а даете double(*)(double)
2. Ну аналогично, написано что несовпадение типов.
BOBAH13 вне форума Ответить с цитированием
Старый 11.02.2010, 10:35   #3
kotjara2
 
Регистрация: 11.02.2010
Сообщений: 6
По умолчанию

почему тогда в консоли работает, а в форме- нет.
у меня не класс, а просто функции.
kotjara2 вне форума Ответить с цитированием
Старый 11.02.2010, 12:02   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а в форме- нет.
Код в студию )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.02.2010, 12:10   #5
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

(_closure) определенно говорит, что прототип double (*pf) (double) пытаються приравнять к фукнции из класса. КОД КОД КОД в студию
подпись
liljon вне форума Ответить с цитированием
Старый 11.02.2010, 12:46   #6
kotjara2
 
Регистрация: 11.02.2010
Сообщений: 6
По умолчанию

Код:
void __fastcall TForm1::ButtonVClick(TObject *Sender)
{
int N = StrToInt(EditN->Text);


double a, b; 
double h; 


double *pA=new double[N+1];

for( int i = 0; i<(N+1); i++ )
{
pA[i]=0;
}
if (RadioButtonTest->Checked)
{
a=-1;
b=1;
double h=double(b-a)/double(N);
FindA(Main,pA,a,b,N,h);
}
здесь приведен код, как вызывается ф-я, кстати, я ошиблась, это класс. приношу извинения.

Последний раз редактировалось Stilet; 11.02.2010 в 15:47.
kotjara2 вне форума Ответить с цитированием
Старый 11.02.2010, 15:39   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от kotjara2 Посмотреть сообщение
Код:
typedef double (*pf) (double)
void FindA(pf func, double *pA,double a, double b, double h, int N)
{
      for (int i=1;i<=N;i++)
       {
         pA[i]=func(a+h*(i-1));
        }
}
double Main(double x)
{
 return sin(x);
}
Кто здесь видит ; после определения типа?

Желательно функцию передавать так: &Main.
И вызывать так: ( * func )(a+h*(i-1));
Carbon вне форума Ответить с цитированием
Старый 11.02.2010, 16:47   #8
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от kotjara2 Посмотреть сообщение
здесь приведен код, как вызывается ф-я, кстати, я ошиблась, это класс. приношу извинения.
впритык не вижу проблемы. "код в студию" означало весь код проекта. И желательно указывать строку, на которую ругаеться компилятор.
подпись
liljon вне форума Ответить с цитированием
Старый 11.02.2010, 18:44   #9
kotjara2
 
Регистрация: 11.02.2010
Сообщений: 6
Смущение

Цитата:
Сообщение от Carbon Посмотреть сообщение
Кто здесь видит ; после определения типа?

Желательно функцию передавать так: &Main.
И вызывать так: ( * func )(a+h*(i-1));
Спасибо огромное, как вы меня спасли.
у меня пошел!!!!!!!!!!!!!
только вызываю Main, -и все отлично. Низкий вам поклон.
kotjara2 вне форума Ответить с цитированием
Старый 11.02.2010, 18:45   #10
kotjara2
 
Регистрация: 11.02.2010
Сообщений: 6
По умолчанию

и остальных благодарю от всей души кто мне помог и поддержал. Низкий Вам поклон.
kotjara2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель this Golovastik Общие вопросы C/C++ 8 16.01.2010 10:30
Указатель на функцию Роман Радер Общие вопросы C/C++ 2 09.11.2009 00:50
Как это сделать. Указатель на функцию. Levsha100 Свободное общение 15 25.09.2009 05:57
(!)указатель на указатель(!) (C)stalin(Cpp) Общие вопросы C/C++ 0 07.06.2009 15:32
Указатель n на m CESHNIK Общие вопросы C/C++ 7 07.03.2008 23:35