Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
#1

Функция рассчета определенного интеграла. (Передача функции как аргумента) - C++

26.03.2009, 12:02. Просмотров 826. Ответов 4
Метки нет (Все метки)

Есть функция пределенная как:
C++
1
float integrall(float (*argFunc)(float x) , float argTmin, float argTmax, float argStep=1)

Если ей в качестве аргумента передать функцию, которая является членом какого-либо класса,
C++
1
integrall(pSubs->pArCpList[0]->getCp, 100,1000);
то компилятор выдает ошибку:
ошибка: аргумент типа ‘float (ThermalCap:: )(float)’ не соответствует типу ‘float (*)(float)’

Однако если передать глобальную функцию
C++
1
integrall(y, 100,1000);
- всё ОК.

Не подскажите что с этим можно сделать?

PS:
OS - Slackware 12.2
Компилятор: gcc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2009, 12:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция рассчета определенного интеграла. (Передача функции как аргумента) (C++):

Передача перегруженной функции как аргумента - C++
Есть 3 метода: static int readInteger() { double temp = readDouble(); int result = temp; if (result != temp) throw new...

Вычисление определенного интеграла функции y(x) численными методами прямоугольников и трапеций - C++
Разработать компьютерную программу вычисления определенного интеграла функции y(x) численными методами прямоугольников и трапеций. В виде...

Вычисление определенного интеграла методом средних прямоугольников для функции - C++
Вот само задание : Разработать программу для вычисления определенного интеграла методом средних прямоугольников для функции типа:...

Передача массива в качестве аргумента функции - C++
В общем нужно передать массив в качестве аргумента без указания его размера, чтобы в дальнейшем присвоить все его содержимое другому...

Передача функции в качестве аргумента массив - C++
Помогите пожалуйста! есть некая рекурсивная функция N которая принимает 2 целочисленные переменные и массив; void N(int, int, "?");...

Передача объекта в качестве аргумента функции (метода) - C++
На "Интуите" имеем код: class Complex { public: int real; // вещественная часть int imaginary; // мнимая часть ...

4
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
26.03.2009, 12:53 #2
попробуй так
C++
1
2
3
4
5
...
#include<functional>
...
   integrall(std::mem_fun(&ThermalCap::getCp), 100,1000);
...
0
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
26.03.2009, 15:40  [ТС] #3
Цитата Сообщение от Humanitis Посмотреть сообщение
попробуй так
C++
1
2
3
4
5
...
#include<functional>
...
   integrall(std::mem_fun(&ThermalCap::getCp), 100,1000);
...
В данном случае ведь не указывается объект класса, которому принадлежит эта функция...
0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
26.03.2009, 16:06 #4
Хм,ну думаю ты никак не сможешь передать указатель на функцию-член какого-нибудь класса,и чтоб функция сама определила из какого именно объекта она вызывается!
Так что тебе придется в функцию передавать еще и указатель на объект класса.
1
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
26.03.2009, 23:17  [ТС] #5
Есть решение! Всем спасибо!

Объявление:

C++
1
2
3
4
5
template <class classX> float integrall(classX *argClassObj,float (classX::*argFunc)(float x) , float argTmin, float argTmax, float argStep=1){
...
(argClassObj->*argFunc)((curT+nextT)/2)*(nextT-curT);
...
}


Вызов:
C++
1
integrall(pSubs->pArCpList[0], &ThermalCap::getCp, 100,1000);
0
26.03.2009, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2009, 23:17
Привет! Вот еще темы с ответами:

Передача двумерного массива в качестве аргумента функции - C++
Подскажите пожалуйста что не так? (Подчёркивает вот тут вот index(A); аргумент функции). Объясните пожалуйста в чём моя ошибка. ...

Передача функции-члена в качестве аргумента (не через указатель) - C++
Привет! Озадачился такой проблемой - вот пример того, что нужно typedef void(class1::*method)(); void func (method) {}; func...

Передача метода класса в качестве аргумента внешней функции - C++
Столкнулся со следующей проблемой. Пусть у меня есть некая внешняя функция, которая принимает в качестве аргумента указатель на функцию...

Возможна ли передача двумерного массива в качестве аргумента функции по ссылке - C++
Нужно передать двумерный массив в функцию. Понятно, что можно сделать так: void point_to_matrix(double**A,int n_row,int n_column){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru